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

MySQL ERROR 1130 解決方案:Host 'root@localhost' 不允許連接

     編輯:MySQL 綜合教學

MySQL ERROR 1130 解決方案:Host 'root@localhost' 不允許連接

ERROR 1130 (HY000): Host 'root@localhost' is not allowed to connect to this MySQL server 表示該用戶無連接權限。本文提供最直接的排查與修復步驟。

一、根因分析

  • MySQL 權限系統基於 user@host 精確匹配
  • root@localhost 僅允許本機 Unix Socket 連接
  • root@% 或 root@127.0.0.1 才允許 TCP 連接
  • 常見原因:全新安裝未執行 mysql_secure_installation、手動刪除 root 帳號、匿名用戶干擾

二、快速修復 (需具備 root 登入權限)

方法 1:跳過權限表啟動 (最通用)

# 1. 停止服務
service mysql stop

# 2. 跳過權限表啟動
mysqld_safe --skip-grant-tables &

# 3. 無密碼登入
mysql -uroot

# 4. 更新權限
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

# 5. 正常重啟
service mysql restart

方法 2:若已有其他 root 帳號可登入

mysql -uroot -p -h 127.0.0.1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'newpass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

方法 3:重新初始化數據目錄 (極端情況)

service mysql stop
mv /var/lib/mysql /var/lib/mysql.bak
mysqld --initialize-insecure --user=mysql
service mysql start
# root 密碼為空,登入後立即修改

三、驗證修復

mysql -uroot -p -h localhost
mysql -uroot -p -h 127.0.0.1
# 兩種方式均應成功

四、預防最佳實踐

  1. 安裝後立即執行 mysql_secure_installation
  2. 保留 root@localhost (Socket) 與 root@127.0.0.1 (TCP) 兩個帳號
  3. 生產環境禁用 root@%,改用專用應用帳號 + 最小權限
  4. 定期審計 mysql.user 表,清理匿名用戶與過期帳號

ERROR 1130 本質是權限元數據與連接方式不匹配。掌握 --skip-grant-tables 急救模式,配合標準化帳號管理流程,即可從容應對。

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