Client does not support authentication protocol requested by server; consider upgrading MySQL client
MySQL 4.1+ 採用 41 位雜湊(mysql_native_password),舊客戶端(4.1 前)僅支持 16 位雜湊(mysql_old_password)。
mysqli 或 PDO_MySQL(原生支持新協議)。libmysqlclient。
-- 單用戶設置
SET PASSWORD FOR 'legacy_user'@'%' = OLD_PASSWORD('newpass');
-- 批量設置
UPDATE mysql.user SET Password = OLD_PASSWORD('newpass') WHERE User = 'legacy_user';
FLUSH PRIVILEGES;
--old-passwords)[mysqld] 添加 old_passwords=1(或 default_authentication_plugin=mysql_old_password 5.7+)。Password 長度 > 16 的賬號重置為舊格式:SELECT Host, User FROM mysql.user WHERE LENGTH(Password) > 16;SET PASSWORD FOR 'user'@'host' = OLD_PASSWORD('newpass');PHP 5.0+ 引入 mysqli(MySQL Improved),完美支持新協議、預處理語句、多語句執行、事務控制。**棄用古老的 mysql_* 擴展**。
SELECT PASSWORD('test');
-- 新協議:以 * 開頭的 41 位字符
-- 舊協議:16 位十六進制字符
old_passwords,強制 caching_sha2_password(8.0 默認)。