解决 MySQL 错误 1130:Host is not allowed to connect
在使用 MySQL 客户端或应用程序连接数据库时,如果遇到错误代码 1130 并提示“Host 'xxx' is not allowed to connect to this MySQL server”,通常是因为当前用户在 mysql.user 表中的 Host 字段未设置为通配符(%),导致权限拒绝。
目标与准备
结果:将本地 MySQL 服务器的 root 用户权限调整为允许任意 IP 连接,消除 1130 错误。
准备条件:
- 拥有 Windows 系统管理员权限(用于停止和启动 MySQL 服务)。
- 知道 MySQL 的安装路径及
bin目录位置。
真实操作顺序
第1步:以管理员身份打开命令提示符
右击 Windows 开始图标或搜索栏,选择“命令提示符(管理员)”或 PowerShell(管理员)。这是执行系统服务指令的前提。
第2步:停止当前 MySQL 服务
在管理员终端中输入以下命令停止正在运行的 MySQL 服务。请注意,你的 MySQL 实例名称可能不同(例如 MySQL、MySQL57、MySQL80 等),请根据实际情况调整 net stop 后的服务名。
net stop MySQL57
第3步:切换到 MySQL bin 目录
将当前工作目录切换到 MySQL 安装目录下的 bin 文件夹。例如:
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
第4步:启动无权限验证的 mysqld 进程
在同一个管理员 CMD 窗口中,输入以下命令启动 MySQL 服务端,且暂时跳过权限表的加载。这样可以在不知道原始密码或绕过权限检查的情况下进入数据库进行配置修改。
mysqld --skip-grant-tables
注意:执行该命令后,CMD 窗口光标会不断闪烁且不再响应输入。此时不要关闭窗口,保持其在后台运行。
第5步:开启新的 CMD 窗口登录 MySQL
按下 Win + R,再次打开一个新的命令提示符窗口(普通权限即可,因为刚才启动的服务端已跳过权限校验)。同样切换到 MySQL 的 bin 目录,然后输入 mysql 回车进入控制台。
第6步:刷新权限并切换数据库
进入 MySQL 控制台后,首先执行刷新命令以确保当前会话获取最新的权限状态:
flush privileges;
接着,切换到系统内置的 mysql 库,这里存储了所有用户和权限信息:
use mysql;
第7步:查看当前用户权限配置
为了确认 root 用户当前的连接限制,可以查询 user 表:
select Host, User, authentication_string from user;
观察结果:如果 root 的 Host 列显示的是 localhost 或具体 IP,这就解释了为什么外部无法连接。
第8步:修改 root 用户的 Host 为通配符
将 root 用户的 Host 更新为 %。这意味着允许任何 IP 地址连接到 MySQL 的 root 账户。
update user set host = '%' where user ='root';
第9步:重新加载权限并重启服务
修改完数据表后,必须使配置生效并恢复正常的安全模式:
flush privileges;
1. 关闭刚才开启的无权限验证的 mysqld 进程(回到第4步的那个 CMD 窗口,按 Ctrl + C 强制终止,或在任务管理器中结束进程)。
2. 以正常方式重新启动 MySQL 服务:
net start MySQL57
完成判断
使用你的 MySQL 客户端工具(如 Navicat, DBeaver 或命令行)尝试重新连接服务器。如果不再报 1130 错误且能成功登录,说明设置已完成。
简要总结
解决 MySQL 1130 错误的本质是修改数据库的用户授权表。通过临时启动 --skip-grant-tables 参数绕过安全锁,手动将 user 表中的 Host 字段改为 %,最后恢复标准服务模式即可。此方法适用于本地开发和测试环境;生产环境中建议仅为特定 IP 配置白名单以提升安全性。
以上就是关于解决 MySQL 连接报错 Host is not allowed to connect 的详细内容,更多关于 MySQL 远程连接配置的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













