Java (Docker+;SpringBoot+;Mysql)Mysql连接被拒绝
问题描述 Spring Boot(app)容器无法连接到“mysql”容器 问题输出 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃 应用程序属性Java (Docker+;SpringBoot+;Mysql)Mysql连接被拒绝,java,mysql,spring,spring-boot,docker,Java,Mysql,Spring,Spring Boot,Docker,问题描述 Spring Boot(app)容器无法连接到“mysql”容器 问题输出 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃 应用程序属性 spring.datasource.username = root spring.datasource.url = jdbc:mysql://mysql:3306/fms?autoReconnect=t
spring.datasource.username = root
spring.datasource.url = jdbc:mysql://mysql:3306/fms?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
spring.datasource.password = manager@123
docker compose.yml
version: '3.7'
services:
mysql:
image: mysql:latest
restart: always
command: --default-authentication-plugin=mysql_native_password
ports:
- "33061:3306"
networks:
- spring-boot-mysql-network
environment:
MYSQL_DATABASE: fms
MYSQL_ROOT_PASSWORD: manager@123
volumes:
- ./database_storage:/docker-entrypoint-initdb.d
app:
build:
context: .
dockerfile: app.Dockerfile
ports:
- "8091:8080"
networks:
- spring-boot-mysql-network
depends_on:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
depends_on:
- mysql
environment:
PMA_HOST: database
PMA_PORT: 3306
ports:
- "9091:80"
networks:
spring-boot-mysql-network:
driver: bridge
我觉得你的设置正确。但是,您使用的是MySQL的最新docker映像(撰写本文时为8.0.x)。因此,您得到的异常表明您的MySQL连接器和MySQL服务器版本之间存在兼容性问题。您在Spring Boot应用程序中使用的是哪个版本?您需要更新连接器或降级MySQL docker映像版本。您的设置在我看来是正确的。但是,您使用的是MySQL的最新docker映像(撰写本文时为8.0.x)。因此,您得到的异常表明您的MySQL连接器和MySQL服务器版本之间存在兼容性问题。您在Spring Boot应用程序中使用的是哪个版本?您需要更新连接器或降级MySQL docker映像版本。您是否可以尝试将MySQL连接器版本更新为
MySQL-connector-java-8.0.11
您是否可以尝试将MySQL连接器版本更新为MySQL-connector-java-8.0.11
我犯了一个愚蠢的错误
我正在更新application.property文件和docker compose
--但是我从来没有重新打包war文件。所以我在读我的旧war文件,从而读我的旧属性文件
我犯了一个愚蠢的错误 我正在更新application.property文件和docker compose --但是我从来没有重新打包war文件。所以我在读我的旧war文件,从而读我的旧属性文件
请尝试使用
“3306:3306”
而不是“33061:3306”
或使用33061
作为jdbc上的端口号:mysql://mysql:33061.......
谢谢你的回复:)但我已经尝试了你的两种解决方案。它仍然说“连接被拒绝”MySQL的容器启动了吗?MySQL是在容器中启动的吗?有防火墙挡道吗?是的。docker ps显示状态(最多3分钟)我甚至可以通过(mysql-h 192.168.32.2-P 3306-u root-P)从主机上使用其ip连接“mysql容器”,尝试“3306:3306”
,而不是“33061:3306”
或使用33061
作为jdbc上的端口号:mysql://mysql:33061.......
谢谢你的回复:)但我已经尝试了你的两种解决方案。它仍然说“连接被拒绝”MySQL的容器启动了吗?MySQL是在容器中启动的吗?有防火墙挡道吗?是的。docker ps显示状态(最多3分钟)我甚至可以通过(mysql-h 192.168.32.2-P 3306-u root-P)从主机使用其ip连接“mysql容器”。谢谢你的回复:)我使用了5.1.45版本的mysql连接器。我刚刚尝试用5.7替换“最新”。但是没有成功。你能提出进一步的建议吗?@Dipesh对不起,我提供了错误的链接。我指的是MySQL Connector/J的最新版本,即8.0.19
(我现在修复了链接)。MySQL docker版本还可以,您可以将其保留在最新版本
,但如果您还设置了确切的docker版本,例如MySQL:8.0
,则会更好。即使使用MySQL:8.0和connector:8.0.19,连接也会被拒绝:(@Dipesh您能提供整个异常日志吗?如果您已经设置了休眠设置,也请提供您的休眠设置。谢谢您的回复:)我使用了5.1.45版本的MYSQL Connector。我刚刚尝试将“最新版本”替换为5.7。但是没有成功。你能提出进一步的建议吗?@Dipesh抱歉,我提供了错误的链接。我指的是MYSQL Connector/J的最新版本,即8.0.19
(我现在修复了链接).MySQL docker版本还可以,您可以将其保留在最新版本
,但如果您还设置了确切的docker版本,例如MySQL:8.0
,则会更好。即使使用MySQL:8.0和connector:8.0.19,连接也会被拒绝:(@Dipesh你能提供整个异常日志吗?如果你设置了hibernate,也请提供你的hibernate设置。谢谢回复。我已经按照你说的将mysql连接器更新到了8.0.11。但是仍然拒绝连接。谢谢回复。我已经按照你说的将mysql连接器更新到了8.0.11。但是仍然拒绝连接ko 100 kaude maare jaye.;是Insan ko 100 kaude maare jaye.。)