MySQL 登入問題多集中在權限系統異常。本文針對「UPDATE password 導致無法登入」與「ERROR 1130 Host not allowed」兩大高頻故障,提供標準化修復流程與原理解析。
直接修改 mysql.user 表的 password 欄位(或 5.7+ 的 authentication_string),繞過了權限系統的加密邏輯,導致密碼雜湊值無效。
systemctl stop mysqld 或 /etc/init.d/mysqld stopmysqld --skip-grant-tables &mysql -u rootmysql> USE mysql;mysql> UPDATE user SET password='' WHERE user='root'; -- 5.7+ 用 authentication_string=''mysql> FLUSH PRIVILEGES;systemctl restart mysqldmysqladmin password 'newpwd' 設定新密碼。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; 或設置複雜密碼。ALTER USER、SET PASSWORD 或 mysqladmin。% 覆蓋。bind-address=0.0.0.0 於 my.cnf。 FLUSH PRIVILEGES 必執行,或重啟服務。掌握核心原理,登入故障不再是障礙。