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

MySQL 登入故障排查:密碼誤改無法登入 & Host not allowed 兩大經典案例

     編輯:MySQL 綜合教學

MySQL 登入故障排查:密碼誤改無法登入 & Host not allowed 兩大經典案例

MySQL 登入問題多集中在權限系統異常。本文針對「UPDATE password 導致無法登入」與「ERROR 1130 Host not allowed」兩大高頻故障,提供標準化修復流程與原理解析。

案例一:執行 UPDATE mysql.user SET password='root' 後無法登入

故障原因

直接修改 mysql.user 表的 password 欄位(或 5.7+ 的 authentication_string),繞過了權限系統的加密邏輯,導致密碼雜湊值無效。

標準修復流程

  1. 停止 MySQL 服務:
    systemctl stop mysqld 或 /etc/init.d/mysqld stop
  2. 跳過授權表啟動:
    mysqld --skip-grant-tables &
  3. 無密碼登入並清空密碼:
    mysql -u root
    mysql> USE mysql;
    mysql> UPDATE user SET password='' WHERE user='root'; -- 5.7+ 用 authentication_string=''
    mysql> FLUSH PRIVILEGES;
  4. 正常重啟 MySQL:
    systemctl restart mysqld
    現可無密碼登入,隨後用 mysqladmin password 'newpwd' 設定新密碼。

案例二:ERROR 1130: Host 'localhost' is not allowed to connect

故障原因

mysql.user 表中無 root@localhost 或 root@% 授權記錄,或 host 欄位值不匹配(如 127.0.0.1 vs localhost)。

修復方案:授權語句法

-- 登入 MySQL(需有效賬號,或用上述 skip-grant-tables 進入)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • '%' 允許任意主機連線,生產環境建議改為具體 IP/網段(如 '192.168.1.%')。
  • 若報 ERROR 1819 密碼策略不滿足,先 SET GLOBAL validate_password_policy=LOW; 或設置複雜密碼。

深度避坑指南

  1. 切勿手動 UPDATE user 表修改密碼,永遠使用 ALTER USER、SET PASSWORD 或 mysqladmin。
  2. 區分 localhost vs 127.0.0.1:MySQL 視為不同 host,需分別授權或用 % 覆蓋。
  3. 防火牆/SELinux:確認 3306 端口開放,bind-address=0.0.0.0 於 my.cnf。
  4. 權限生效:FLUSH PRIVILEGES 必執行,或重啟服務。

掌握核心原理,登入故障不再是障礙。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved