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

MySQL "Found wrong password for user... Ignoring user" 排查:密碼長度、舊協議、PASSWORD() 函數三大原因

     編輯:MySQL 資料庫相關知識

錯誤現象

[Warning] Found wrong password for user 'some_user'@'some_host'; ignoring user

啟動或 FLUSH PRIVILEGES 時出現,該帳號無法登入。

三大原因與修復

原因檢查方式修復方案
1. 密碼欄位長度不足 (舊版升級)SHOW COLUMNS FROM mysql.user LIKE 'Password'; 長度 < 41執行 mysql_upgrade 或手動 ALTER TABLE mysql.user MODIFY Password CHAR(41);
2. 使用舊 4.1 前密碼格式 (16 字元)SELECT User, Host, Length(Password) FROM mysql.user WHERE Length(Password) = 16;更新密碼:SET PASSWORD FOR 'user'@'host' = PASSWORD('newpwd'); 或啟動加 --old-protocol (不推薦)
3. 直接寫入明文密碼未用 PASSWORD()SELECT Password FROM mysql.user WHERE User='user'; 非 * 開頭雜湊UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='user' AND Host='host'; FLUSH PRIVILEGES;

密碼雜湊演進

  • MySQL 4.1 前:16 字元十六進制 (雙 SHA1 早期版本)。
  • MySQL 4.1~5.6:41 字元 *... (SHA1(SHA1(password)))。
  • MySQL 5.7+:authentication_string 欄位,支援 caching_sha2_password (預設)、mysql_native_password。

驗證修復

FLUSH PRIVILEGES;
SELECT User, Host, plugin, authentication_string FROM mysql.user WHERE User='some_user';
-- 嘗試登入
mysql -u some_user -p

預防建議

  • 嚴禁直接 INSERT/UPDATE mysql.user 繞過 PASSWORD() 或 SET PASSWORD。
  • 定期執行 mysql_upgrade 同步系統表結構。
  • 淘汰 mysql_native_password,全面遷移 caching_sha2_password (需客戶端 8.0+ 支援)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved