设置 MySQL 允许外网远程访问的详细步骤
在本地开发完成后,往往需要将 MySQL 数据库暴露给外部网络以便其他服务器或客户端连接。本教程将分两部分说明:一是修改配置文件解除本地监听限制,二是通过 SQL 命令授予远程账户权限。操作前请务必确认已备份数据,并注意生产环境下的网络安全风险。
第一步:修改 MySQL 配置文件解除本地绑定
默认情况下,MySQL 可能仅监听本地回环地址(127.0.0.1),拒绝外部连接。需要编辑对应的配置文件来更改此行为。
第1步:定位并编辑配置文件
目的:找到监听地址配置项,允许非本地 IP 连接。
入口:终端命令行 vim 或 nano 编辑器。
动作:
- Linux 系统通常位于
/etc/mysql/my.cnf或/etc/my.cnf;Windows 系统通常为my.ini。 - 使用管理员权限打开文件:
# Linux 示例
sudo vim /etc/mysql/my.cnf
在文件中搜索 bind-address 字段。如果存在如下内容:bind-address = 127.0.0.1
请将其注释掉或删除该行,或者修改为 0.0.0.0 以监听所有网络接口:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
第2步:重启 MySQL 服务
目的:使配置文件变更生效。
动作:
sudo service mysql restart
# 或者在某些系统中使用
sudo systemctl restart mysqld
第二步:创建允许远程访问的用户账号
修改配置后,还需确保数据库内部有允许从远程主机登录的用户账户。默认 root 用户通常只允许 localhost 连接。
第3步:登录 MySQL 并检查用户权限
入口:mysql -u root -p
动作:
use mysql;
select user, host from user;
观察输出结果,若 root 用户的 host 值为 localhost 或 127.0.0.1,则需进行修改或新建账户。
第4步:授权远程访问
以下两种方法可选其一。推荐使用方法一,更具灵活性且符合现代安全规范。
方法一:授予所有数据库的所有权限给指定 IP 或任意 IP
参数:'user'@'host':用户名及允许连接的来源 IP。'password':账户密码。*.*:所有数据库的所有表。
示例1:允许任意 IP 通过 root 连接(仅限测试环境)
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
示例2:仅允许特定 IP(如 192.168.1.102)连接
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
方法二:修改现有用户 Host 为 %
注意:直接更新 host 字段需谨慎,不建议在生产环境对 root 用户执行,除非完全了解其影响。
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
完成判断与安全提醒
配置完成后,可从外部网络尝试使用客户端工具(如 Navicat、DBeaver 或命令行)连接 MySQL。若能成功建立连接,即表示配置成功。
- 防火墙放行:确保服务器安全组或防火墙(如 iptables, ufw, firewalld)已开放 MySQL 默认端口
3306。 - 网络安全:将 host 设置为
%意味着允许任何 IP 连接,这会极大增加被暴力破解的风险。生产环境中建议限制为特定的服务器 IP 段,或使用 SSH 隧道进行加密连接。
以上就是设置 MySQL 允许外网访问的详细内容,更多关于数据库远程配置的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













