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
相关产品推荐
相关产品推荐

