【mysql】navicat 连接mysql 1130错误

671 阅读2分钟

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;