如何让VirtualBox中Ubuntu22.04的MySQL数据库全局可访问?
公网访问Ubuntu虚拟机LAMP服务的配置步骤
核心问题确认
是的,校外访问时你的Ubuntu虚拟机必须处于运行状态——Apache、MySQL等服务都运行在虚拟机内,虚拟机关机后所有服务都会停止,无法对外提供访问。
配置步骤
1. 允许MySQL远程连接
默认MySQL仅允许本地访问,需修改配置开放远程连接:
- 登录MySQL控制台:
sudo mysql -u root -p - 给你的授权用户开放远程访问权限(替换
your_user和your_password为实际信息):GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;安全建议:如果能确定校外访问的IP范围,把
%换成具体IP段(比如学校的局域网IP段),降低被攻击的风险。 - 修改MySQL绑定地址:
编辑配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address = 127.0.0.1,改为bind-address = 0.0.0.0(或直接注释掉该行)。 - 重启MySQL服务:
sudo systemctl restart mysql
2. 配置Ubuntu防火墙
开放HTTP和MySQL端口的外部访问:
sudo ufw allow 80/tcp sudo ufw allow 3306/tcp sudo ufw reload
3. VirtualBox端口转发
把虚拟机的端口映射到物理机:
- 打开VirtualBox,选中目标虚拟机 → 「设置」→「网络」
- 选择「NAT」网卡,点击「端口转发」
- 添加两条规则:
- 名称:HTTP,主机端口
8080(选一个未被占用的自定义端口),子系统端口80 - 名称:MySQL,主机端口
3307(选一个未被占用的自定义端口),子系统端口3306
- 名称:HTTP,主机端口
- 保存后重启虚拟机。
4. 家庭路由器端口映射
把物理机的端口映射到公网:
- 登录路由器管理后台(通常为
192.168.1.1或192.168.0.1) - 找到「端口映射」/「虚拟服务器」选项
- 添加两条映射规则:
- 外部端口
8080→ 内部端口8080→ 物理机的局域网IP(可通过ip a在物理机查看) - 外部端口
3307→ 内部端口3307→ 物理机的局域网IP
- 外部端口
- 保存配置。
5. 公网访问测试
- 查询家庭公网IP:物理机浏览器搜索「我的公网IP」获取
- 校外访问时:
- PHP连接数据库的地址填写公网IP,端口用
3307 - 访问网页用
http://[你的公网IP]:8080/[你的PHP文件].php
- PHP连接数据库的地址填写公网IP,端口用
安全提示
- 避免使用默认的80、3306端口,用自定义非标准端口降低被恶意扫描的风险
- 定期更新系统和软件包:
sudo apt update && sudo apt upgrade - 若公网IP是动态的,可使用DDNS服务绑定域名,无需每次更换IP访问
- 不要暴露MySQL的root用户在公网,仅使用你创建的授权用户
内容的提问来源于stack exchange,提问作者Dawid Piechówka
相关产品推荐
相关产品推荐

