解决MySQL/MariaDB 1130错误:无法远程连接的正确方法

远山来客
远山来客
发布时间:2026-10-15 | 6人浏览过
原创

在配置数据库服务时,经常会遇到 MySQL 1130 错误提示“Host is not allowed to connect”,这通常意味着当前用户被限制为仅允许从 localhost(本地)连接。本文将详细说明如何通过修改用户表权限来解除这一限制,实现远程访问。

问题现象与原因

当尝试使用客户端工具远程连接数据库服务器时,如果看到类似以下的错误信息:

ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xx' is not allowed to connect to this MariaDB server (注:MariaDB 是 MySQL 的一个分支,错误机制相同)

这说明该用户在 `mysql` 库的 `user` 表中,`Host` 字段被设定为 localhost 或具体 IP,而非允许所有主机访问的通配符 %。

一、开启远程登录权限

第1步:登录服务器数据库

使用终端命令行登录到您的 MySQL/MariaDB 服务器。通常需要 root 账户具有执行权限。

第2步:切换系统数据库

进入存储用户信息的 mysql 系统数据库:

use mysql;

第3步:修改用户主机权限

找到对应用户的权限记录,并将其 Host 字段从 localhost 更新为 %。% 代表允许任何 IP 地址的连接。如果您希望限制特定 IP,也可以替换为具体的服务器 IP 地址。

假设用户名是 root,更新语句如下(请根据实际情况替换用户名):

update user set host = '%' where user = 'root';

此操作的效果是将原本地回环地址的用户数据复制一份并更名,使得该用户可以接受来自任意主机的连接请求。

二、刷新MySQL权限

由于直接修改了底层用户表,内存中的权限缓存并未同步。必须执行刷新命令使更改立即生效。

flush privileges;

三、测试验证

回到您的本地电脑或远程客户端,使用新配置的账号密码尝试重新连接数据库。若不再弹出 1130 错误并成功进入命令行界面或查询界面,则说明设置成功。

补充说明与风险提醒

1. 安全性:将 Host 设为 % 会允许全网访问,建议同时设置强密码,并通过防火墙(如 iptables/ufw)限制仅允许特定 IP 段访问数据库端口(默认3306),生产环境不建议完全开放。

2. 版本差异:不同版本的 MySQL/MariaDB 中,用户表结构可能略有不同(例如新特性引入了 `auth_string`),上述命令适用于绝大多数常见场景。

以上就是MySQL/MariaDB解决1130错误的详细内容,更多关于远程连接权限配置的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表