遠程工具(MySQL-Front、Navicat、DBeaver)連接報錯 Host 'x.x.x.x' is not allowed to connect to this MySQL server(錯誤碼 1130),本質是 mysql.user 表中無匹配的 Host 記錄。本文記錄完整排查修復流程。

本地連接正常:
mysql -u root -p
# 成功進入
USE mysql;
SELECT User, Host FROM user;
+------+-----------------+
| User | Host |
+------+-----------------+
| root | localhost |
| root | master.cloudera |
| root | 127.0.0.1 |
| | localhost |
| | master.cloudera |
+------+-----------------+
❌ 缺少客戶端 IP 10.53.105.221 的授權記錄。
-- 授予 root@10.53.105.221 全權限(含遠程連接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.53.105.221' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
SELECT User, Host FROM user;
+------+-----------------+
| User | Host |
+------+-----------------+
| root | 10.53.105.221 | -- 新增成功
| root | 127.0.0.1 |
| root | localhost |
| root | master.cloudera |
| | localhost |
| | master.cloudera |
+------+-----------------+

| 場景 | Host 值寫法 | 說明 |
|---|---|---|
| 僅本地連接 | localhost | Unix Socket 連接,繞過 TCP/IP |
| 本地 TCP 連接 | 127.0.0.1 | 走 Loopback 接口,需 TCP 端口開放 |
| 指定 IP 遠程 | 192.168.1.100 | 精確匹配單 IP |
| IP 段遠程 | 192.168.1.% | 通配符匹配網段 |
| 任意主機 | % | 最高風險,僅內網受信環境慎用 |
# CentOS 7 firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# iptables
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
# 阿里雲/騰訊雲控制台 → 安全組 → 入站規則 → 3306/TCP → 授權對應 CIDR
skip_name_resolve=ON 避免 DNS 解析延遲導致連接超時。mysql.user,清理無用/過期/過度授權記錄。遠程連接不通 90% 是 user.Host 缺失 + 防火牆攔截。雙管齊下,秒級修復。