我有一个用于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:8080restart: on-failure这是我的 Dockerfile:FROM openjdk:8EXPOSE 8080ADD /target/app-0.0.1.jar app.jarENTRYPOINT ["java","-jar","app.jar"]这是application.properties我的应用程序的:spring.jpa.database=MYSQLspring.jpa.show-sql=truespring.datasource.url=jdbc:mysql://docker-mysql:3306/test?characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=rootspring.jpa.hibernate.ddl-auto=nonespring.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 !
2 回答
达令说
TA贡献1821条经验 获得超6个赞
您应该更改以下属性以使用您在 docker-mysql 中定义的用户和传递。
spring.datasource.password=pass
此外,links在您的 spring-boot 应用程序中添加该选项。
depends_on:
- docker-mysql
links:
- docker-mysql
我认为这并不重要,但文档中的示例使用不带引号的密码。如果以上失败,请尝试。
慕姐8265434
TA贡献1813条经验 获得超2个赞
您需要使用 root 用户访问 mysql,因此使用 mysql root 用户运行以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.20.0.3'
IDENTIFIED BY 'pass'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
请检查!
添加回答
举报
0/150
提交
取消