首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

MySQL 4.1+ 客戶端認證協定不相容問題解決方案

     編輯:關於SqlServer

錯誤現象

shell> mysql
Client does not support authentication protocol requested by server;
consider upgrading MySQL client

根本原因

MySQL 4.1 引入新密碼雜湊演算法 (SHA1 基礎的雙重雜湊),舊版客戶端 (4.0 及之前) 僅支援舊演算法 (單次雜湊),導致認證失敗。

三種解決方案

方案一:升級客戶端程式庫 (推薦)

  • 所有客戶端應用程式升級至 4.1.1 或更新版本
  • 包含:MySQL 命令列工具、連接器 (JDBC/ODBC/.NET/PHP)、應用程式內嵌客戶端
  • 根治相容性問題,獲得安全性改進

方案二:使用舊式密碼帳號

  • 建立/保留使用舊式密碼雜湊的帳號供舊客戶端連線
  • 新帳號預設使用新式雜湊,需明確指定舊式

方案三:將特定帳號密碼重設為舊式雜湊

-- 方法 1:SET PASSWORD + OLD_PASSWORD()
SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

-- 方法 2:UPDATE + FLUSH PRIVILEGES
UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') 
WHERE User = 'some_user' AND Host = 'some_host';
FLUSH PRIVILEGES;

驗證密碼雜湊類型

SELECT User, Host, Password, LENGTH(Password) FROM mysql.user;
-- 舊式:16 字元十六進位
-- 新式:41 字元 (以 * 開頭)

安全性考量

  • 舊式雜湊安全性較低,易受暴力破解
  • 方案二/三僅作為**過渡期相容**手段
  • 長期規劃:**全面升級客戶端至 4.1.1+**

PHP 應用特別注意

  • PHP 5.0+ 內建 `mysqli` 擴充支援新協定
  • 舊 `mysql` 擴充需 PHP 4.3.11+/5.0.4+ 並連結新版 libmysqlclient
  • 連接字串無需變更,僅需更新底層客戶端程式庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved