ปัญหา MySQL ในเดเบียน
www.tanabutr.co.th/photobook
หลังจากที่เมื่อวานอัปเกรดเดเบียนที่อยู่ใน coLinux ด้วย apt-get upgrade วันนี้มาเปิดเว็บที่สร้างด้วย Drupal แล้วมันบอกว่าต่อกับ MySQL ไม่ติด. เลยต้องไปตรวจสอบว่าโปรเซสว่า mysqld มันทำงานอยู่หรือเปล่า. ปรากฏว่าไม่ทำงานซึ่งมันก็แปลกเลยต้องสตาร์ทใหม่ด้วยมือ
# /etc/init.d/mysql start
Starting MySQL database server: mysqld...failed.
Please take a look at the syslog.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysq
ld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock'
exists!
รันไม่ขึ้น. จำได้เว่า error message อันนี้มันคุ้นเคยเห็นมีคนโพสไว้ที่ webboard ของ LTN ก็มาเจอด้วยตัวเองครั้งนี้แหละ. ถ้าดูอาการตามเนื้อผ้าจาก error ก็พอจะรู้ว่า MySQL ไม่สามารถติดต่อกับ socket (unix domain socket) ไฟล์ /var/run/mysqld/mysqld.sock แถมยังบอกให้ตรวจสอบดูอีกว่าไฟล์ซ็อกเก็ตนั้นมีอยู่จริงหรือไม่. ไปตรวจสอบดูแล้วก็ไม่มีไฟล์ซ็อกเก็ตนั้น จะไปสร้างไฟล์ซ็อกเก็ตเองก็กระไรอยู่เพราะปรกติโปรแกรมเซอร์เวอร์น่าจะสร้างให้, ส่วนไคล์เอ็นต์ก็จะเป็นแค่ตัวที่ไปติดต่อกับซ็อกเก็ตนั้น. ใน error บอกให้ไปดูที่ syslog ซึ่งก็คือไฟล์ /var/log/syslog.
Sep 27 01:03:21 www mysqld_safe[1939]: started Sep 27 01:03:21 www mysqld[1943]: 050927 1:03:21 /usr/sbin/mysqld: unknown vari able 'old_passwords=1' Sep 27 01:03:21 www mysqld[1943]: Sep 27 01:03:21 www mysqld_safe[1945]: ended Sep 27 01:03:27 www /etc/init.d/mysql[2008]: 0 processes alive and '/usr/bin/mys qladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in Sep 27 01:03:27 www /etc/init.d/mysql[2008]: ^G/usr/bin/mysqladmin: connect to s erver at 'localhost' failed Sep 27 01:03:27 www /etc/init.d/mysql[2008]: error: 'Can't connect to local MySQ L server through socket '/var/run/mysqld/mysqld.sock' (2)' Sep 27 01:03:27 www /etc/init.d/mysql[2008]: Check that mysqld is running and th at the socket: '/var/run/mysqld/mysqld.sock' exists! Sep 27 01:03:27 www /etc/init.d/mysql[2008]:
ก็จะเห็นว่ามี error คล้ายๆกัน แต่บรรทัดที่น่าสนใจคือ unknown variable 'old_passwords=1'. ลองไป search Google เพิ่มเติมเจอว่าเป็น bug ของ MySQL ในเดเบียน. คอมเมนต์เอาต์บรรทัด old=passwords ที่ไฟล์ /etc/mysql/my.cnf แล้วก็จะหาย, รัน MySQL ได้เป็นปรกติ. การดู error ให้ดีและสำรวจให้เป็นก็แก้ปัญหาได้. หวังว่าบั้กนี้จะได้รับการแก้ไขโดยเร็ว.
อีกอย่างหนึ่งคือ mysql-server ที่มีปัญหาในเครื่องคือ 4.0.24-10 ครับ.
# dpkg -l mysql-server Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii mysql-server 4.0.24-10 mysql database server binariesComments: blogger