วันอังคารที่ 7 กันยายน พ.ศ. 2553

วิธีติดต่อ MySQL บน Ubuntu จากเครื่องอื่น

ติดตั้ง MySQL Server บน Ubuntu แล้ว สามารถเรียกใช้งานผ่านคำสั่ง mysql บนเครื่องนั้นได้ ไม่มีปัญหาอะไร ใช้ GUI Tools บนเครื่อง หรือจะใช้ phpMyAdmin ก็ไม่มีปัญหา ใช้งานได้ดีเยี่ยม

แต่ พอจะใช้ GUI Tools ที่อยู่บนเครื่องอื่นๆนอกเครื่องเซิร์ฟเวอร์ เช่นจะใช้ MySQL Query Browser, MySQL Front, MySQL Yog หรือแม้แต่ phpmyadmin ก็ไม่สามารถติดต่อได้

ตรวจสอบข้อมูล:

ตรวจสอบการ grant privilges ก็แล้ว ถูกต้องแน่นอน ใช้คำสั่งเดียวกันบนเครื่องอื่นๆ ก็ยังทำได้ แต่ไม่ใช่ Ubuntu

ตรวจสอบว่าติดที่ firewall หรือไม่ ก็ไม่ใช่ปัญหาอีก ตรวจสอบด้วยเครื่องมือดังกล่าวติดต่อไปยัง MySQL บน CentOS หรือ บน Windows ก็ไม่พบปัญหา เหมือน Ubuntu ทำไงดี ?

สมมุติฐาน:

Ubuntu พยายามจะรักษาความปลอดภัยให้เป็นอย่างมาก โดยกำหนดที่ไฟล์ my.cnf โดยตรง

จากการค้นคว้า พบว่ามี Server Option ชื่อ bind_address ทำหน้าที่เจาะจงว่า จะยอมรับการติดต่อจาก IP Address ใด ซึ่งจะกำหนดได้เพียงหนึ่งเดียวเท่านั้น โดย Default จะกำหนดเป็น 127.0.0.1 (บน Ubuntu) ซึ่งหมายความว่า รับฟังจากเครื่อง localhost เท่านั้น

แนวทางการแก้ไข:

ให้แก้ไขไฟล์ my.cnf ด้วยคำสั่ง

sudo vi /etc/mysql/my.cnf

แก้ไข

bind-address = 127.0.0.1

เป็น

#bind-address = 127.0.0.1

แล้ว restart mysql

sudo /etc/init.d/mysql restart

เพิ่มเติม:

เมื่อเปิด server option นี้ จะยอมรับการเชื่อมต่อจากทุกที่ หากต้องการความปลอดภัย ให้ติดตั้ง firewall เพิ่มเติม และใช้คำสั่ง grant privileges เพื่อกำหนด Access Control เพิ่มเติมด้วย
ที่มา http://share.psu.ac.th/blog/kx-note/15713