簡體   English   中英

(Docker+SpringBoot+Mysql) Mysql 連接被拒絕

[英](Docker+SpringBoot+Mysql) Mysql connection refused

問題描述

Spring Boot(應用程序)容器無法連接到“mysql”容器

問題輸出

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:無法創建到數據庫服務器的連接。 嘗試重新連接 3 次。 放棄。

應用程序屬性

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

我犯了一個愚蠢的錯誤。

我正在更新 application.property 文件和 docker-compose up --build。

你的設置在我看來是正確的。 但是,您使用的是 MySQL 的最新 docker 映像(在撰寫本文時為 8.0.x)。 因此,您得到的異常表明您的 MySQL 連接器和 MySQL 服務器版本之間存在兼容性問題。 您在 Spring Boot 應用程序中使用的是哪個版本的MySQL Connector/J 您需要更新連接器或降級 MySQL docker 鏡像版本。

您可以嘗試將 mysql 連接器版本更新為mysql-connector-java-8.0.11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM