You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot连接Strato远程MySQL数据库失败求助(PHP可正常连接)

问题描述

使用Strato主机提供的数据库,PHP可正常连接,但IntelliJ IDEA 2022的Spring Boot项目中无法连接该远程数据库,报错信息如下:

HHH000342: Could not obtain connection to query metadata
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:111) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:98) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:90) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:64) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:74) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:895) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:820) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na]

当前Spring Boot数据库配置:

spring:
  datasource:
    url: jdbc:mysql://rdbms.strato.de:3306/dbs1?autoReconnect=true&useSSL=false
    username: dbName
    password: my password
driverClassName: com.mysql.jdbc.Driver
解决方案

1. 修正数据库驱动类

你使用的是mysql-connector-j-8.0.33(MySQL 8.x版本驱动),但配置的驱动类是旧版的com.mysql.jdbc.Driver,需替换为新版驱动类:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver

注:Spring Boot 2.x及以上版本可省略该配置,框架会根据JDBC URL自动识别驱动类,但手动指定时必须与驱动版本匹配。

2. 补充JDBC URL必要参数

MySQL 8.x驱动强制要求时区配置,且Strato远程数据库可能需要允许公钥检索权限,修改URL如下:

spring:
  datasource:
    url: jdbc:mysql://rdbms.strato.de:3306/dbs1?autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
  • serverTimezone=UTC:解决MySQL 8.x驱动要求的时区配置缺失问题
  • allowPublicKeyRetrieval=true:允许远程连接时检索数据库公钥,避免认证失败

3. 确认Strato数据库远程访问权限

PHP可正常连接大概率是因为其运行在Strato服务器内部,而本地Spring Boot属于外部访问,需:

  • 登录Strato后台,检查数据库的远程访问白名单,将本地IP地址添加至允许列表
  • 确认Strato是否开启了数据库的外部IP连接权限(部分主机商默认仅允许内部访问)

4. 用IDEA工具验证连接

在IntelliJ IDEA的Database面板中直接测试连接:

  • 添加MySQL数据源,填入你的URL、用户名、密码
  • 点击测试连接,根据IDE给出的具体提示排查问题(如IP拦截、密码错误等)

内容的提问来源于stack exchange,提问作者Ara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:37:46