MySQL允许外网远程访问配置指南

陆景行
陆景行
发布时间:2026-10-13 | 5人浏览过
原创

默认情况下MySQL仅允许本地localhost访问。如需实现外网或其他设备远程连接数据库,需要修改用户表的Host字段或使用GRANT语句授予相应权限,并刷新系统权限表方可生效。

方法一:修改User表(适用于旧版本MySQL 5.7及以下)

在早期版本的MySQL中,可以通过直接更新mysql数据库下的user表来实现远程访问。操作前请确保你拥有足够的数据库权限。

  1. 登录MySQL:使用命令行工具以root身份登录到本地数据库。
mysql -u root -p

输入密码进入后,切换至mysql系统库:

use mysql;

查询当前用户的host设置,确认原有配置:

select host, user from user;

将root用户的host修改为通配符“%”,表示允许来自任何IP的连接:

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

最后务必执行刷新权限命令,否则修改不会立即生效:

flush privileges;

方法二:使用GRANT语句(推荐,安全性更高)

这是更规范且常用的做法,可以针对特定用户和IP进行精确授权。

第1步:允许所有主机连接

如果你想允许root用户使用指定密码从任何IP地址连接到服务器:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
flush privileges;

第2步:允许特定IP连接

出于安全考虑,通常建议只授权特定的开发机或应用服务器的固定IP。例如,允许IP为192.168.1.104的主机连接:

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'192.168.1.104' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
flush privileges;

常见问题与排错

  • 修改不生效:绝大多数情况是因为忘记执行 flush privileges;。
  • 防火墙拦截:如果SQL层面已授权但仍无法连接,请检查服务器操作系统(如CentOS、Ubuntu)或云厂商控制台的安全组规则,确保3306端口对外开放。
  • 配置文件限制:检查 /etc/my.cnf 或 /etc/mysql/my.cnf,若包含 bind-address=127.0.0.1,请将其注释掉或改为 0.0.0.0,随后重启MySQL服务。

以上就是配置MySQL允许外网远程访问的详细内容,更多关于MySQL网络配置的资料请关注本站其它相关文章!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表