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

Docker部署的Spring应用连接MySQL数据库出现通信链路故障求助

问题排查与修复方案

1. Docker Compose配置中的核心错误

数据库名称不匹配

db服务通过MYSQL_DATABASE指定的数据库是umc-db,但Spring应用的SPRING_DATASOURCE_URL里写的是umc,数据库名称不一致直接导致连接失败。

数据库用户名不匹配

db服务创建的数据库用户是umc-admin,但Spring应用配置的SPRING_DATASOURCE_USERNAME是umc,用户名错误无法通过认证。

修复后的app环境变量配置

environment:
  SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/umc-db?autoReconnect=true&allowPublicKeyRetrieval=true&useSSL=false
  SPRING_DATASOURCE_USERNAME: umc-admin
  SPRING_DATASOURCE_PASSWORD: admin@umc

2. 数据库就绪等待问题

depends_on仅保证db服务先启动,但不确保MySQL完成初始化并接受连接。给db服务添加健康检查,让app服务等待数据库就绪后再启动:

给db服务添加健康检查

db:
  image: mysql:8.0.27
  command: '--default-authentication-plugin=mysql_native_password'
  security_opt:
    - seccomp:unconfined
  environment:
    DATABASE_HOST: docker-mysql
    DATABASE_PORT: 3306
    MYSQL_ROOT_PASSWORD: admin@umc
    MYSQL_DATABASE: umc-db
    MYSQL_USER: umc-admin
    MYSQL_PASSWORD: admin@umc
  healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-padmin@umc"]
    interval: 5s
    timeout: 5s
    retries: 5

修改app服务的depends_on依赖(支持健康检查)

app:
  image: umc:0.0.1
  ports:
    - 8080:8080
  environment:
    SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/umc-db?autoReconnect=true&allowPublicKeyRetrieval=true&useSSL=false
    SPRING_DATASOURCE_USERNAME: umc-admin
    SPRING_DATASOURCE_PASSWORD: admin@umc
  depends_on:
    db:
      condition: service_healthy

3. 本地数据库连接失败的排查方向

  • 检查本地MySQL的数据库名称是否与Spring配置一致
  • 确认本地MySQL用户是否存在、密码是否匹配
  • 检查本地MySQL是否允许从当前主机访问(比如权限设置是否包含localhost/127.0.0.1)
  • 查看本地MySQL日志,定位连接拒绝或认证失败的具体原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:48:24