【问题标题】:Docker compose for mysql and spring app gives access deniedDocker compose for mysql 和 spring app 拒绝访问
【发布时间】:2018-09-30 15:06:04
【问题描述】:

我有一个 docker compose 用于MySQL + Spring boot 应用程序:

这就是我的docker-compose.yaml 的样子

version: "3.3"
services:
  docker-mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'pass'
      MYSQL_DATABASE: 'test'
    volumes:
      - /var/lib/mysql
    ports:
      - 3306:3306
  my-app:
    build: .
    depends_on:
      - docker-mysql
    ports:
      - 8080:8080
restart: on-failure

这是我的 Dockerfile:

FROM openjdk:8
EXPOSE 8080
ADD /target/app-0.0.1.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

这是我的应用程序的application.properties

spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.datasource.url=jdbc:mysql://docker-mysql:3306/test?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driverClassName=com.mysql.jdbc.Driver

但是当我使用docker-compose up 运行容器时,应用程序遇到访问被拒绝:

Access denied for user 'root'@'172.20.0.3' (using password: NO)

在日志文件中,mysql创建时密码为空!

[Warning] root@localhost is created with an empty password !

【问题讨论】:

    标签: java mysql docker docker-compose


    【解决方案1】:

    您应该将以下属性更改为使用用户并通过,您在 docker-mysql 中定义。

    spring.datasource.password=pass
    

    另外,在您的 spring-boot 应用程序中添加 links 选项。

    depends_on:
      - docker-mysql
    links:
      - docker-mysql
    

    我认为这并不重要,但文档中的示例使用不带引号的密码。如果上述方法失败,请尝试。

    【讨论】:

    • links 在任何新版本的 Docker/Compose 上都不需要使用version: "3" YAML 文件。
    • 很高兴知道,谢谢..自从我按照 docker 的建议转到网络后,我不再使用链接,所以没有跟上更新。
    【解决方案2】:

    你需要用root用户访问mysql,所以用mysql root用户运行下面的命令:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.20.0.3'
        IDENTIFIED BY 'pass' 
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    请检查!

    【讨论】:

    • @Sajad : 您需要从 mysql 命令提示符运行此命令。
    • 如果您使用本机 mysql,这可能是必要的。但是,当您使用 docker mysql 时没有必要。 Docker mysql 应该按原样工作,不需要额外的工作。
    猜你喜欢
    • 2017-11-19
    • 2017-10-12
    • 1970-01-01
    • 2019-06-06
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2019-02-18
    相关资源
    最近更新 更多