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

无法从Spring Boot应用连接Docker部署的MySQL服务器

解决Windows本地Spring Boot连接Docker MySQL 5.7失败的问题

可能的原因及对应解决方案

1. MySQL root用户远程访问权限未开启

Docker部署的MySQL默认root用户仅允许容器内部访问,Windows主机属于远程连接场景,需要手动授权:

  • 进入MySQL容器:
    docker exec -it docker-mysql mysql -uroot -proot
    
  • 执行授权SQL:
    GRANT ALL PRIVILEGES ON TEST.* TO 'root'@'%' IDENTIFIED BY 'root';
    FLUSH PRIVILEGES;
    
    这条命令允许root用户从任意IP访问TEST数据库,执行完成后退出容器即可。

2. JDBC URL参数缺失或错误

使用com.mysql.cj.jdbc.Driver(MySQL 8.0+版本驱动)连接MySQL 5.7时,必须补充必要参数避免兼容性问题:
修改application.properties中的数据源URL为:

spring.datasource.url=jdbc:mysql://localhost:3306/TEST?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
  • serverTimezone:解决时区不匹配导致的驱动异常
  • allowPublicKeyRetrieval:允许驱动获取MySQL公钥,解决连接时的权限验证报错

3. Docker网络映射异常(localhost无法访问时)

如果上述操作后仍无法连接,可能是Windows与Docker的网络映射存在问题:

  • 查看MySQL容器的IP地址:
    docker inspect docker-mysql | findstr "IPAddress"
    
  • 将JDBC URL中的localhost替换为上述命令得到的容器IP,例如:
    spring.datasource.url=jdbc:mysql://172.17.0.2:3306/TEST?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    

4. Windows防火墙拦截

检查Windows防火墙是否阻止了3306端口的入站/出站请求,可暂时关闭防火墙测试,或添加规则允许Spring Boot应用访问3306端口。


内容的提问来源于stack exchange,提问作者Benedek József Lakatos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:48:19