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

解決 MySQL ERROR 1130:Host not allowed to connect 遠程連線授權全攻略

     編輯:MySQL 綜合教學

MySQL ERROR 1130 遠程連線被拒:原因與解決方案

將資料庫遷移至伺服器後,嘗試遠程連線報錯:

ERROR 1130 (HY000): Host '192.168.1.3' is not allowed to connect to this MySQL server

原因:MySQL 預設安裝僅允許本機 (localhost/127.0.0.1) 連線,root 帳號的 host 欄位未包含遠程 IP 或通配符 %。

快速修復:授權 root 遠程存取

# 1. 本機登入 MySQL
mysql -u root -p

# 2. 切換到 mysql 系統庫
USE mysql;

# 3. 修改 root 帳號 host 為 %(允許所有 IP)
UPDATE user SET host = '%' WHERE user = 'root';

# 4. 驗證修改
SELECT host, user FROM user;
# 應顯示 root | % 記錄

# 5. 刷新權限生效
FLUSH PRIVILEGES;

進階安全配置:指定 IP 而非通配符

生產環境建議限制具體 IP而非開放 %:

# 僅允許 192.168.1.0/24 網段
CREATE USER 'root'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

網路層面檢查:bind-address 配置

若授權後仍無法連線,檢查 MySQL 監聽地址:

# 查看監聽狀態
netstat -tunlp | grep 3306
# 若僅顯示 127.0.0.1:3306,需修改配置

# 編輯配置檔
vi /etc/my.cnf
# 找到 [mysqld] 區段
# 註釋或修改 bind-address
# bind-address = 127.0.0.1  →  bind-address = 0.0.0.0
# 或直接註釋掉該行

# 重啟服務生效
systemctl restart mysqld

防火牆/安全組放行 3306 埠

# CentOS 7+ firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

# 雲廠商安全組:入站規則開放 TCP 3306,來源設為應用伺服器 IP

驗證遠程連線

# 客戶端測試
mysql -h 192.168.1.100 -u root -p
# 成功進入 MySQL monitor 表示配置生效

最佳實踐總結

  1. 避免直接使用 root 遠程連線,建立專用應用帳號並最小權限授權
  2. 配置 bind-address = 0.0.0.0 監聽所有介面
  3. 防火牆/安全組限制來源 IP
  4. 啟用 SSL 加密傳輸(REQUIRE SSL)
  5. 定期審計 mysql.user 表,移除過期帳號
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved