docker compose for mysql和spring应用拒绝访问

des4xlb0  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(433)

我有一个 Docker 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

这是我的文件:

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 !
khbbv19g

khbbv19g1#

您应该更改以下属性以使用dockermysql中定义的user和pass。

spring.datasource.password=pass

另外,添加 links 在你的 Spring 启动应用程序选项。

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

我认为这无关紧要,但文档中的示例使用的是不带引号的密码。如果上述方法失败,也可以尝试。

2q5ifsrm

2q5ifsrm2#

您需要使用root用户访问mysql,因此请使用mysql root用户运行以下命令:

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

请检查!

相关问题