【问题标题】:docker-compose service cannot connect to mysql container in springbootdocker-compose 服务无法在 spring boot 中连接到 mysql 容器
【发布时间】:2023-02-23 02:09:28
【问题描述】:

我正在尝试使用 spring boot 服务连接到 mysql 容器,但是它显示我无法连接到数据库。

docker-compose.yml

dbmysql:
  container_name: dbmysql
  image: mysql:latest
  restart: unless-stopped  
  environment:
    MYSQL_ROOT_PASSWORD: "password"
    MYSQL_USER: "admin"
    MYSQL_DATABASE: freelance

  ports:
    - "3306:3306"
  volumes:
    - /var/lib/docker/volumes/freelance_volume/_data

userjob:
  depends_on:
    - dbmysql
    - eureka-server
  image: userjob:latest
  container_name: userjob
  build:
    context: userjob/.
    dockerfile: Dockerfile.layered #docker file path (. means current directory)
  ports:
    - "8000:8000"
  environment:
    - spring.datasource.url=jdbc:mysql://dbmysql:3306/freelance
    - spring.datasource.username=admin
    - spring.datasource.password="password"
    - log.level.root=debug

产量:

error:
`java.sql.SQLException: Access denied for user 'admin'@'172.18.0.10' (using password: YES) 2023-02-22T17:36:09.797671197Z   at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797672529Z   at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797673778Z    at
 com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797674920Z    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797676415Z   at 
com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797677642Z     at 
com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-j-8.0.31.jar:8.0.31] 2023-02-22T17:36:09.797678805Z     at 
com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] 2023-02-22T17:36:09.797679943Z    at 
com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] 2023-02-22T17:36:09.797681125Z    at 
com.zaxxer.hikari.pool.PoolBase.`

我试图将端口设置为另一个 eg.3307 否则都失败了

【问题讨论】:

    标签: mysql spring-boot docker docker-compose


    【解决方案1】:

    该错误消息表明连接成功,但数据库帐户被拒绝。

    查看您的 MySQL 容器配置,我看到您正在为 root 用户设置密码,但没有为 admin 用户设置密码。您需要将以下环境变量添加到您的 MySQL 容器中:

    MYSQL_PASSWORD: "password"
    

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2021-04-04
      • 2020-02-18
      • 2020-06-06
      • 2019-07-07
      • 2020-01-29
      • 2019-09-09
      • 2021-05-17
      相关资源
      最近更新 更多