解决 MySQL 1130 错误:无法远程连接服务器的步骤

方予
方予
发布时间:2026-10-16 | 4人浏览过
原创

当尝试从外部客户端连接 MySQL 或 MariaDB 时,若遇到 1130 - Host ... is not allowed to connect to this MariaDB server 错误,表明当前用户账户未被授权进行远程访问。MySQL 出于安全考虑,默认只允许 localhost 本地连接。本文将介绍如何通过修改数据库用户权限来解决此问题。

错误分析与解决思路

出现 1130 错误的根本原因在于数据库的用户表中,对应用户的 host 字段被限制为 localhost 或具体 IP,未包含通配符 % 或未配置外网 IP。要解决此问题,需要以 root 身份登录数据库,修改该用户的 host 属性并刷新权限。

开启远程登录权限的详细步骤

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

目的:进入数据库管理环境。
操作:在服务器终端使用命令行工具登录 root 账户。

# 假设密码为 password,请根据实际情况替换
mysql -u root -p

第2步:切换至 mysql 系统库

目的:访问存储用户权限信息的表。
操作:执行以下 SQL 语句。

use mysql;

第3步:修改用户访问权限

目的:将原本仅限本地连接的账户改为允许任意 IP 连接(或指定特定 IP)。
注意:不同版本的 MySQL/MariaDB 表结构略有差异,以下为通用更新方式。

若使用的是较新版本的 MySQL (8.0+) 或 MariaDB,通常建议使用 ALTER USER 语句:

-- 将 'root' 用户的 host 修改为 '%' (代表允许所有IP)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password' ;
UPDATE user SET host = '%' WHERE user = 'root';

如果是旧版本或简单场景,直接更新 host 字段亦可(操作前建议备份):

UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';

此处将 localhost 替换为 %,表示允许任何主机连接。出于安全考虑,生产环境中建议将 % 替换为具体的客户端 IP 地址。

第4步:刷新权限使配置生效

目的:将内存中的权限数据同步到磁盘并重新加载。
操作:执行刷新命令。

FLUSH PRIVILEGES;

验证连接

完成判断:离开数据库控制台后,尝试从另一台机器上使用客户端工具(如 Navicat、DBeaver 或命令行)连接该 MySQL 服务器。

mysql -h <server_ip> -u root -p

如果不再提示 1130 错误并能成功输入密码登录,说明远程权限已正确开启。

安全提示

虽然将 host 设为 % 能解决连接问题,但这意味着任何知道账号密码的人都能尝试连接。在生产环境中,建议采取以下安全措施:

  1. 限制 IP:仅在 UPDATE 语句中指定特定的客户端 IP,而非使用通配符 %。
  2. 强密码:确保 root 或其他高权限账户使用高强度的密码。
  3. 防火墙:配置云服务器或本地防火墙(如 iptables, ufw),仅允许受信任的 IP 段访问 3306 端口。

以上就是 MySQL 1130 异常远程登录权限配置的详细内容,更多关于数据库连接排错的资料请关注本站其它相关文章!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表