1130 说明 MySQL拒绝 Navicat 的 IP(“Host is not allowed to connect”)
- 本机登录
mysql -u root -p输入 root 密码即可。若 MySQL 安装在自定义路径,可写全路径 /usr/bin/mysql -u root -p。
-
查看是否有库 SHOW DATABASES;
-
查看现有授权:在服务器上登录 MySQL 执行
mysql> SELECT host,user FROM mysql.user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
mysql>
上面表示:目前只有 localhost 用户,MySQL 仅允许本机连接,所以 Navicat(远程地址)会一直报 1130。按下面步骤开放远程即可:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果以上不能解决。可参考下方方案:
- 关闭反向解析:日志里有 “IP address … could not be resolved”;在 my.cnf 加 skip-name-resolve([mysqld] 节),重启 systemctl restart mysql。之后只用 IP 做授权。
- 绑定地址:确认 my.cnf 没有 bind-address=127.0.0.1。若有,改为 0.0.0.0 或服务器 IP。
- 防火墙/安全组:3306 已能 telnet,说明基本 OK,但仍可检查云安全组是否允许该客户端 IP。
- Navicat 设置:Host 填服务器真实 IP、端口 3306,用户名/密码与上面一致。若用 SSH 隧道,确保隧道 Host 是 127.0.0.1 并授权 root@'localhost'。
完成授权+禁用反向解析后,重启 MySQL 再试连接,1130 会消失。
如果报错1045:
1045 是认证失败,逐项排查:
- 确认账号存在:你已有 root@'%' 和 root@'localhost'。
- 重置远程密码:在服务器 mysql> 内执行
ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;
如果也在本机用 Navicat,顺便
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
- Navicat 填写一致:Host 你的ip,端口 3306,用户名 root,密码。注意避免保存旧密码。
- 避免混用缓存:改完密码后,先断开所有旧连接,再重新连接。如果有多个连接配置,逐个核对。
- 若仍失败,建新账号(推荐避免动 root):
CREATE USER 'navicat'@'%' IDENTIFIED BY 'StrongPass!';
GRANT ALL ON your_db.* TO 'navicat'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;