將開發機 MySQL 升級至 5.6 後,連線舊版資料庫即報錯:
Warning: mysql_connect(): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
MySQL 5.6 預設開啟 secure_auth,要求客戶端使用新版密碼雜湊格式 (4.1.1+)。舊版伺服器仍使用 pre-4.1 短雜湊,導致協議不匹配而被拒絕。
在舊版 MySQL 上為受影響帳號重設密碼,自動轉為新雜湊:
SET PASSWORD FOR 'root'@'%' = PASSWORD('new_password');
FLUSH PRIVILEGES;
mysql -h host -u user -p --secure-auth=0php.ini:mysql.secure_auth = Off (PHP 5.6+ 已棄用)PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false (視驅動版本而定)在 my.cnf 的 [mysqld] 區段加入:
secure_auth=0
重啟 MySQL 後生效,但會降低安全性,僅供過渡期使用。