MySQL 4.1.1 起密碼雜湊從 16 位升級為 41 位(以 * 開頭)。舊版客戶端(含 PHP 早期 libmysql.dll)不支援新認證協議,報錯:
#1250 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
將 MySQL 5.0 附帶的 libmysql.dll 替換 PHP 擴充目錄下的舊版。實測風險:新版 DLL 可能缺少舊函式(如 mysql_drop_db()),導致 PHP 載入 php_mysql.dll 失敗。需等待 PHP 官方釋出相容版本。
mysqld-nt --old-passwords,另開視窗測試 SELECT PASSWORD('pwd') 應回傳 16 位雜湊。my.ini(WinXP/2000 通常在 C:\Windows\my.ini 或 C:\WinNT\my.ini),在 [mysqld] 區段加入:
[mysqld]
set-variable=old-passwords
UPDATE mysql.user SET Password=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
直接修改 mysql.user 表 Password 欄位長度(16 ↔ 41),MySQL 會自動切換認證模式。但修改後必須重設密碼並 FLUSH PRIVILEGES 或重啟服務。