我有一個用于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
提交
取消