【发布时间】:2021-04-24 08:15:09
【问题描述】:
MySQL 进程已启动并可访问,但 Spring 无法连接并停止:
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
Docker-compose 是这样的:
version: '3'
services:
mysql-db:
image: mysql:latest
container_name: mysql_demo
restart: always
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: demo
MYSQL_USER: root
MYSQL_PASSWORD: secret
ports:
- "3306:3306"
spring-rest-api:
build:
context: ./
dockerfile: Dockerfile
container_name: rest_api
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql-db:3306/demo?autoReconnect=true&useSSL=false
DB_USER: root
DB_PWD: secret
DB_NAME: demo
volumes:
- ./data/applogs:/tmp/logs
ports:
- 8080:8080
depends_on:
- mysql-db
我可以连接到 MySQL 容器,并且可以从容器内部连接到 MySQL。 从主机 PC 我不能,但我认为 MySQL 客户端无法通过 tcp 连接是一个问题(或者我做不到)。
不管怎样,SpringBoot 启动正常但无法连接然后崩溃。 在没有 Docker 的情况下,应用程序可以正常工作。
我在日志中也注意到了
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
我有点受阻...
【问题讨论】:
-
刚刚找到 &allowPublicKeyRetrieval=true 并添加到 url...它似乎工作...
标签: mysql spring-boot docker