MySQL 4.1+ 採用新密碼雜湊演算法,導致使用舊版客戶端庫 (PHP mysql 擴展、舊版 JDBC/ODBC 等) 的程式無法連線,報錯:「Client does not support authentication protocol」。
為指定帳號設定舊式 16 位元組密碼雜湊,使舊客戶端可正常認證。
-- 1. 建立帳號 (預設會用新式雜湊)
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345';
-- 2. 立即改為舊式雜湊
SET PASSWORD FOR 'admin'@'localhost' = OLD_PASSWORD('12345');
SET PASSWORD FOR 'existing_user'@'host' = OLD_PASSWORD('new_password');
my.cnf 加入:
[mysqld]
old_passwords = 1
重啟 MySQL 生效。
shell> mysql -u admin -p12345
Welcome to the MySQL monitor...
OLD_PASSWORD() 維持舊系統運行。