Docker compose for mysql 和 spring 应用程序拒绝访问

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


这是我的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 !


忽然笑
浏览 207回答 2
2回答

达令说

您应该更改以下属性以使用您在 docker-mysql 中定义的用户和传递。spring.datasource.password=pass此外,links在您的 spring-boot 应用程序中添加该选项。depends_on:  - docker-mysqllinks:  - docker-mysql我认为这并不重要,但文档中的示例使用不带引号的密码。如果以上失败,请尝试。

慕姐8265434

您需要使用 root 用户访问 mysql,因此使用 mysql root 用户运行以下命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.20.0.3'    IDENTIFIED BY 'pass'     WITH GRANT OPTION;FLUSH PRIVILEGES;请检查!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java