错误“1130 - Host '192.168.5.12' is not allowed to connect”表明MySQL权限表未授权该IP访问,需通过GRANT或UPDATE user表修改Host值为'%'或指定IP,并刷新权限、检查bind-address配置及云平台安全组规则。

当你在Navicat里输入完服务器IP、端口、用户名和密码,点击“连接”后弹出“1130 - Host '192.168.5.12' is not allowed to connect to this MySQL server”提示,说明MySQL服务明确拒绝了你的IP接入请求——这不是密码错、不是网络不通,而是权限表里根本没登记你这台机器。
确认当前用户允许的访问主机
第一步:用SSH登录MySQL所在服务器,执行命令进入MySQL命令行:mysql -u root -p。
第二步:切换到系统数据库:USE mysql;。
第三步:查user表中目标用户的host值:SELECT User, Host FROM user WHERE User = 'root';。
如果结果里Host列只显示localhost或127.0.0.1,就证实了问题根源——这个用户根本不被允许从远程IP登录。注意:【localhost和127.0.0.1在MySQL权限系统中不等价,二者都不能匹配真实外网IP】。
方法一:用GRANT语句授权(推荐)
执行这条命令,允许root用户从任意IP连接(生产环境慎用):GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的实际密码' WITH GRANT OPTION;
如果只想放行某一台开发机,把%替换成具体IP,例如'192.168.5.12'——这样既解决问题又控制风险。
执行完必须刷新权限:FLUSH PRIVILEGES;。
方法二:直接更新user表(应急可用)
方法二操作快,但绕过权限校验机制,仅限临时调试使用。
运行更新语句:UPDATE user SET Host = '%' WHERE User = 'root' AND Host = 'localhost';
【务必确认WHERE条件精准匹配,否则可能误改其他用户记录】。
立即刷新权限:FLUSH PRIVILEGES;。
检查MySQL监听地址是否放开
编辑MySQL配置文件:/etc/my.cnf(Linux)或C:\ProgramData\MySQL\MySQL Server X.X\my.ini(Windows)。
找到[mysqld]段落,检查是否存在bind-address = 127.0.0.1这一行。
如果存在,把它注释掉(前面加#)或改为bind-address = 0.0.0.0。
保存后重启MySQL服务:systemctl restart mysqld(CentOS/RHEL)或sudo service mysql restart(Ubuntu/Debian)。
云服务器额外步骤:开放安全组
阿里云、腾讯云、华为云等平台,即使MySQL本身配置正确,也会被云平台安全组拦截。
登录云控制台→找到对应ECS实例→进入“安全组”→点击“配置规则”→添加入方向规则。
协议类型选TCP,端口范围填3306,授权对象填0.0.0.0/0(测试用)或精确到你的办公IP(如202.108.1.5/32)。
保存后无需重启服务器,规则即时生效。


















