首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 4.1 新認證機制導致舊程式無法連線的解決方法

     編輯:MySQL 資料庫相關知識

問題現象

MySQL 4.1+ 採用新密碼雜湊演算法,導致使用舊版客戶端庫 (PHP mysql 擴展、舊版 JDBC/ODBC 等) 的程式無法連線,報錯:「Client does not support authentication protocol」。

解決核心:使用 OLD_PASSWORD() 函數

為指定帳號設定舊式 16 位元組密碼雜湊,使舊客戶端可正常認證。

建立新帳號並指定舊式密碼

-- 1. 建立帳號 (預設會用新式雜湊)
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345';

-- 2. 立即改為舊式雜湊
SET PASSWORD FOR 'admin'@'localhost' = OLD_PASSWORD('12345');

修改現有帳號密碼為舊式

SET PASSWORD FOR 'existing_user'@'host' = OLD_PASSWORD('new_password');

全域設定 (所有新密碼自動用舊式)

my.cnf 加入:

[mysqld]
old_passwords = 1

重啟 MySQL 生效。

驗證

shell> mysql -u admin -p12345
Welcome to the MySQL monitor...

長期建議

  • **短期**:用 OLD_PASSWORD() 維持舊系統運行。
  • **長期**:升級應用程式的資料庫驅動程式 (PHP 改用 mysqli/PDO、Java 升級 Connector/J、Python 升級 mysqlclient 等) 以支援新式認證,享受更高安全性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved