Client does not support authentication protocol MySQL

Client does not support authentication protocol requested by server; consider upgrading MySQL client.

ปัญหานี้เกิดจากการ upgrade MySQL version ไปยัง version 4.1+ เนื่องจากใช้วิธีในการเข้ารหัส user ต่างกัน ใน version ก่อนหน้า 4.1 ใช้การเข้ารหัสด้วยความยาว 16 bytes แต่ใน version หลังจาก 4.1 ใช้ความยาวถึง 4.1 bytes ทำให้การ upgrade version มีปัญหา

การแก้ปัญหาคือต้องไปเปลี่ยนการเข้ารหัสแบบใหม่นั้น ให้กลายเป็นแบบเก่า เพราะว่าเรายังคงใช้เทคโนโลยีอื่นๆในแบบเก่าอยู่ จึงต้องปรับให้ support กัน

วิธีการแก้ปัญหาตามนี้
1. เข้าไปยัง root database ของ MySQL
– ไปที่ command prompt แล้วไปยัง MySQL Directory\bin จากนั้นพิมพ์

1
mysql -u root -p

ระบบจะร้องขอ password ให้ใส่ลงไปแล้ว enter
– หรือไปที่ start->All Programs->MySQL->MySQL Server 4.1->MySQL Command Link Client
จากนั้นก็ใส่ password
MySQL Command
2. ใส่คำสั่งนี้ไปเพื่อ update password ให้เป็นแบบ old password

1
2
3
4
UPDATE mysql.USER
SET password=OLD_PASSWORD('somepassword')
WHERE USER='someuser'
AND host='somehost';

ควรจะทำกับทุก user ที่มี เพราะถ้าไม่ทำ ก็ใช้งานไม่ได้ ลอง select มาดูก่อนก็ได้ ว่า user มีใครบ้าง

1
SELECT USER FROM mysql.USER

3. หลังจากนั้นให้ flush table เพื่อ update ข้อมูลที่เพิ่งแก้ไขไป

1
FLUSH privileges;

4. ทดสอบเข้า phpmyadmin เพื่อดูว่าใช้งานได้รึไม่ น่าจะได้นะครับ (ถ้าไม่ได้ก็… ไม่รู้ทำยังไงเหมือนกัน ^ ^)

ขอบคุณ
thaicyberpoint
digitalpeer

หวังว่าข้อมูลนี้จะมีประโยชน์ไม่มากก็น้อยนะครับ