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

Spring Boot应用连接Docker部署的MySQL出现连接拒绝问题排查

Docker中Spring Boot连接MySQL容器失败的原因分析

以下是可能导致连接拒绝异常的几个核心问题及解决办法:

  • 连接端口使用错误
    你当前的数据源URL用了3309端口,但同一Docker网络内的容器通信,必须使用数据库容器的内部端口,也就是MySQL默认的3306。宿主机的3309:3306映射是给宿主机或外部机器访问用的,容器之间直接用内部端口即可。
    修正后的URL:

    spring.datasource.url=jdbc:mysql://productsdb:3306/products?createDatabaseIfNotExist=true&useSSL=false
    
  • MySQL容器未完成初始化
    MySQL 5.7容器启动后需要几分钟完成系统表创建、权限配置等初始化操作,如果Spring Boot容器启动过早,数据库还没准备好接受连接,就会出现连接拒绝。
    可以先单独启动productsdb容器,等日志输出[Note] mysqld: ready for connections.后,再启动Spring Boot容器;如果用Docker Compose,建议给数据库容器添加健康检查,让Spring Boot容器等待数据库就绪后再启动。

  • 缺少数据库用户名配置
    你的application.properties里只配置了URL,没有指定登录用户名。虽然MySQL默认用root,但显式配置能避免驱动默认值冲突:

    spring.datasource.username=root
    spring.datasource.password=admin
    
  • 网络连通性验证
    确认两个容器确实在同一网络内:

    1. 查看数据库容器的网络信息:docker inspect productsdb | grep Networks
    2. 进入Spring Boot容器,ping数据库容器名称:docker exec -it <你的Spring Boot容器名> ping productsdb
    3. 尝试用MySQL客户端直接连接:docker exec -it <你的Spring Boot容器名> mysql -h productsdb -P 3306 -u root -padmin
      如果这些操作失败,说明网络配置有问题,需要检查commerce_net网络是否存在,或者容器是否正确加入该网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:21