萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.x 修改密碼後無法登入?舊版密碼協議相容性解決方案

問題現象

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 官方釋出相容版本。

方案二:強制伺服器使用舊式密碼雜湊(落地快)

  1. 臨時驗證:命令列啟動 mysqld-nt --old-passwords,另開視窗測試 SELECT PASSWORD('pwd') 應回傳 16 位雜湊。
  2. 永久生效:編輯 my.ini(WinXP/2000 通常在 C:\Windows\my.ini 或 C:\WinNT\my.ini),在 [mysqld] 區段加入:
    [mysqld]
    set-variable=old-passwords
  3. 重啟 MySQL 服務。
  4. 重設密碼並刷新權限:
    UPDATE mysql.user SET Password=PASSWORD('新密碼') WHERE User='root';
    FLUSH PRIVILEGES;

進階觀察

直接修改 mysql.user 表 Password 欄位長度(16 ↔ 41),MySQL 會自動切換認證模式。但修改後必須重設密碼並 FLUSH PRIVILEGES 或重啟服務。

copyright © 萬盛學電腦網 all rights reserved