Client does not support authentication protocol requested by server; consider upgrading MySQL client
MySQL 4.1+ 採用雙倍長度密碼雜湊(41 位元組),舊版客戶端(4.0.x、舊 PHP mysql 擴充)僅支援 16 位元組舊格式,導致連線失敗。
mysqli 或 PDO_MySQL(PHP 5.0+ 內建),原生支援新協定。-- 建立專用帳號給舊客戶端
CREATE USER 'legacy_app'@'%' IDENTIFIED BY 'password';
-- 強制使用舊雜湊
SET SESSION old_passwords = 1;
UPDATE mysql.user SET Password = OLD_PASSWORD('password') WHERE User = 'legacy_app';
FLUSH PRIVILEGES;
my.cnf [mysqld] 區段加入:old_passwords = 1SELECT Host, User FROM mysql.user WHERE LENGTH(Password) > 16;SET PASSWORD FOR 'user'@'host' = OLD_PASSWORD('newpwd');| 擴充 | PHP 版本 | 支援新協定 | 建議 |
|---|---|---|---|
| mysql (舊) | < 5.3 | 否 | 棄用,勿用於新專案 |
| mysqli | ≥ 5.0 | 是 | 首選程序式/物件導向介面 |
| PDO_MySQL | ≥ 5.1 | 是 | 資料庫抽象層首選 |