You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨设备Java连接VM中MySQL数据库失败问题求助

跨设备Java连接XAMPP MySQL失败的排查与解决方法

核心问题定位

系统A(192.168.1.6)无法连接系统B(VirtualBox桥接虚拟机,IP 192.168.1.254)上的XAMPP MySQL,仅系统B本地运行程序可正常连接,已尝试用户权限配置、XAMPP设置调整但无效。

分步排查与解决

1. 先确认虚拟机网络是否正常连通

  • 在系统A的命令行执行 ping 192.168.1.254,如果没有返回数据包,说明VirtualBox桥接网卡配置有问题:
    • 打开VirtualBox虚拟机设置→网络,确认桥接模式绑定的是主机当前正在使用的网卡(比如WiFi或有线网卡)
    • 进入虚拟机的Windows 10,手动设置静态IP为192.168.1.x网段(和系统A同网段),避免DHCP自动分配导致IP变动
  • 如果ping通,再测试3306端口是否开放:执行 telnet 192.168.1.254 3306(Windows需先开启telnet功能)或 nc -zv 192.168.1.254 3306(Linux/macOS),如果连接失败,说明端口被拦截。

2. 修改MySQL绑定地址,允许外部连接

XAMPP默认MySQL仅监听localhost,需要调整配置让它接受所有IP的连接:

  • 打开XAMPP控制面板,点击MySQL模块的Config按钮,选择my.ini配置文件
  • 找到 bind-address 配置项,将其值改为 0.0.0.0(如果该行被注释,去掉前面的#)
  • 重启XAMPP的MySQL服务,确保配置生效

3. 配置虚拟机防火墙允许3306端口入站

Windows 10默认防火墙会拦截外部对3306端口的请求,需要添加规则:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
  • 选择「端口」→ 下一步,勾选「TCP」,输入特定本地端口3306
  • 选择「允许连接」→ 下一步,勾选所有网络类型(或仅允许192.168.1.0/24网段)
  • 命名规则(比如“MySQL外部连接”)后完成创建

4. 再次确认MySQL用户的连接权限

确保你的MySQL用户拥有从外部IP连接的权限:

  • 在系统B的XAMPP里打开MySQL的Shell,执行:
    SELECT user, host FROM mysql.user;
    
    查看你的用户(比如root)对应的host字段是否为%(表示允许所有IP连接),如果是localhost或127.0.0.1,则只能本地连接
  • 如果权限不足,执行授权语句(注意你的密码为空):
    GRANT ALL PRIVILEGES ON caleno.* TO 'root'@'%' IDENTIFIED BY '';
    FLUSH PRIVILEGES;
    

5. 检查JDBC代码细节

  • 确认JDBC URL拼写正确,端口号3306是XAMPP默认MySQL端口,如果你修改过要对应调整
  • 检查项目中的MySQL驱动版本:MySQL 8.0及以上驱动类为com.mysql.cj.jdbc.Driver,5.x版本为com.mysql.jdbc.Driver,驱动版本不匹配也会导致连接失败

内容的提问来源于stack exchange,提问作者cl3ar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:16:19