升級開發機 MySQL 至 5.6 後,連接舊版服務器報錯:
Warning: mysql_connect(): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
舊版服務器仍使用 pre-4.1 密碼雜湊格式(16 字元十六進制),而 5.6 客戶端預設啟用 secure_auth,拒絕不安全的舊格式認證。
在舊版服務器執行:
SET PASSWORD FOR 'root'@'%' = PASSWORD('new_password');
FLUSH PRIVILEGES;
PASSWORD() 會生成新版 41 字元雜湊,兼容 secure_auth。
命令行連接時加參數:
mysql -h 10.51.1.11 -P 3308 -uroot --secure-auth=off
PHP 應用可在 php.ini 設定:
mysqlnd.secure_auth = Off
在舊版 my.cnf 加 secure-auth=1 並重啟,但舊版本可能無此選項。
CREATE USER 'u'@'%' IDENTIFIED BY 'pwd';(5.6+ 預設新格式)。