mysql 报错 1130 的含义是:
error 1130 (hy000): host 'xxx' is not allowed to connect to this mysql server
也就是说:当前客户端 ip / 主机,没有被 mysql 允许连接。
常见触发原因
1. mysql 用户只允许本地连接
很多情况下,root 或业务用户只允许 localhost 登录:
select host, user from mysql.user;
如果你看到类似:
user | host root | localhost
那么 远程 ip 连接一定会报 1130。
2. 使用 ip 连接,但用户只配置了域名 / localhost
比如:
你用
192.168.1.10连接但 mysql 里只有
user@localhost或user@%没配
3. mysql 没监听公网 / 内网地址
my.cnf 中配置了:
bind-address = 127.0.0.1
这种情况下 只允许本机连接。
4. 云服务器 / 防火墙拦截
即使 mysql 用户权限没问题,也可能:
3306 端口未放行
云厂商安全组未开放
防火墙(iptables / firewalld)拦截
快速解决方案(最常用)
方法 1:允许某个 ip 远程连接(推荐)
create user 'user'@'192.168.1.%' identified by 'password'; grant all privileges on dbname.* to 'user'@'192.168.1.%'; flush privileges;
或允许任意 ip(测试环境):
create user 'user'@'%' identified by 'password'; grant all privileges on dbname.* to 'user'@'%'; flush privileges;
方法 2:修改已存在用户的 host
update mysql.user set host = '%' where user = 'user'; flush privileges;
⚠️ 生产环境不建议直接 update,优先用 create user / grant。
方法 3:修改 bind-address
编辑 my.cnf 或 mysqld.cnf:
bind-address = 0.0.0.0
然后重启 mysql:
systemctl restart mysqld
排查步骤(建议按顺序)
1. 确认报错完整信息
error 1130 (hy000): host 'xxx.xxx.xxx.xxx' is not allowed
2. 确认你从哪里连
mysql -h 服务器ip -u user -p
3. 确认 mysql 用户权限
select user, host from mysql.user;
4. 确认端口是否监听
netstat -ntlp | grep 3306
5. 确认防火墙
firewall-cmd --list-ports
安全建议(很重要)
❌ 不建议
root@'%'✅ 建议:
指定 ip
指定数据库
最小权限原则
grant select, insert, update on dbname.* to 'user'@'固定ip';
总结一句话
mysql 1130 = 连接来源 ip 不在 mysql 允许列表中
到此这篇关于mysql报错1130问题排查及快速解决方案的文章就介绍到这了,更多相关mysql报错1130问题排查内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论