要实现MySQL外网访问,需修改bind-address为0.0.0.0以监听所有IP,授予用户’用户名’@’%’远程权限并刷新,开放防火墙3306端口,配置云服务器安全组规则允许TCP 3306入站。

MySQL 默认不能外网访问,通常是出于安全考虑。如果需要从外部网络连接 MySQL,需从配置、权限和服务器环境三方面进行调整。以下是具体解决方法:
1. 修改 MySQL 绑定地址
MySQL 默认只监听 127.0.0.1,即仅允许本地访问。要支持外网访问,需修改配置文件,使其监听所有 IP 或指定公网 IP。
找到 MySQL 配置文件(通常为 my.cnf 或 my.ini),路径一般在:
/etc/mysql/my.cnf(Linux)C:ProgramDataMySQLMySQL Server x.xmy.ini(Windows)
找到 bind-address 这一行,将其修改为:
bind-address = 0.0.0.0
这表示监听所有网络接口。若只想允许特定 IP 访问,可填写服务器的公网 IP。
修改后重启 MySQL 服务:
sudo systemctl restart mysql
2. 授予用户远程访问权限
即使 MySQL 开放了端口,用户默认也可能只能本地登录。需为用户添加远程访问权限。
登录 MySQL(使用 root 或有权限的账户):
mysql -u root -p
执行以下命令,允许指定用户从任意主机访问:
GRANT ALL PRIVILEGES ON *.* TO ‘用户名’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
例如:
GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
然后刷新权限:
知网AI智能写作
知网AI智能写作,写文档、写报告如此简单
38 查看详情
FLUSH PRIVILEGES;
注意:使用 ‘%’ 表示允许从任何 IP 连接,生产环境建议限制为具体 IP 更安全。
3. 检查防火墙设置
即使 MySQL 配置正确,服务器防火墙可能阻止了 3306 端口的外部访问。
查看防火墙是否放行 3306 端口:
iptables(旧版):
确保有规则允许 3306 端口ufw(Ubuntu):
运行 sudo ufw allow 3306firewalld(CentOS/RHEL):
运行 sudo firewall-cmd –permanent –add-port=3306/tcp,然后重载 –reload
4. 检查云服务器安全组
如果你使用的是阿里云、腾讯云、AWS 等云服务器,还需配置安全组规则。
进入云平台控制台,找到对应实例的安全组,添加入站规则:
协议类型:TCP端口范围:3306源地址:0.0.0.0/0(或限制为特定 IP)
不配置安全组,即使本地防火墙开放也无法从外网访问。
基本上就这些。改完配置后,可用另一台机器测试连接:
mysql -h 你的服务器IP -u 用户名 -p
如果连不上,检查 MySQL 错误日志(通常在 /var/log/mysql/error.log)排查问题。
注意:开放 MySQL 外网访问有安全风险,建议配合强密码、限制访问 IP、使用 SSL 加密等方式增强安全性。
以上就是mysql不能外网访问如何解决的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/580979.html
微信扫一扫
支付宝扫一扫