(Docker + SpringBoot + Mysql)Mysql连接被拒绝

时间:2020-03-23 16:15:10

标签: java mysql spring spring-boot docker

问题描述

Spring Boot(app)容器无法连接到“ mysql”容器

问题输出

由以下原因引起:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建与数据库服务器的连接。尝试重新连接3次。放弃。

application.properties

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

3 个答案:

答案 0 :(得分:0)

您的设置对我来说看起来正确。但是,您正在使用MySQL的最新docker映像(在编写本文时为8.0.x)。因此,您得到的异常表明您的MySQL连接器和MySQL服务器版本之间存在兼容性问题。您在Spring Boot应用程序中使用哪个版本的MySQL Connector/J?您需要更新连接器或降级MySQL docker映像版本。

答案 1 :(得分:0)

您能否尝试将mysql连接器版本更新为mysql-connector-java-8.0.11

答案 2 :(得分:0)

我犯了一个愚蠢的错误。

我正在更新我的application.property文件和docker-compose --build。但是我从未打包战争文件,所以我正在读取旧的战争文件,因此正在读取旧的财产文件