Spring+JDBC连接本地MySQL 8.0.11报MySQLNonTransientConnectionException
解决MySQL 8.0.11与Spring JDBC连接异常问题
看起来你遇到的是MySQL 8.x版本和旧JDBC驱动/配置不兼容导致的连接问题,我来帮你一步步排查解决:
核心问题分析
你的MySQL版本是8.0.11,属于较新的版本,但代码里用的是旧版JDBC驱动类com.mysql.jdbc.Driver,且JDBC URL缺少MySQL 8.x要求的必要参数,这是连接失败的主要原因。
具体解决方案
1. 更换JDBC驱动类
MySQL 8.0之后官方已废弃com.mysql.jdbc.Driver,需改用新的驱动类:
Class.forName("com.mysql.cj.jdbc.Driver");
注:JDBC 4.0及以上版本(Java 6+)可省略Class.forName()步骤,驱动会通过SPI机制自动加载;若要保留该代码,必须使用新类名。
2. 升级JDBC驱动版本
确保项目依赖的是适配MySQL 8.0的驱动版本(如mysql-connector-java:8.0.33或其他8.x系列),5.x版本驱动无法兼容MySQL 8.x。
若用Maven,在pom.xml中添加依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>
3. 完善JDBC URL参数
MySQL 8.0要求必须指定时区,若遇到公钥检索权限问题,还需添加allowPublicKeyRetrieval=true参数。修改URL为:
private final String URL= "jdbc:mysql://127.0.0.1:3306/db_example?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
serverTimezone可根据本地时区调整,比如Asia/Shanghai,避免时区不一致引发的问题。
4. 验证数据库用户权限
虽然终端能正常访问,仍可确认testuser是否拥有从127.0.0.1连接db_example的权限:
登录MySQL终端后执行:
GRANT ALL PRIVILEGES ON db_example.* TO 'testuser'@'127.0.0.1' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
修正后的完整代码示例
private final String URL= "jdbc:mysql://127.0.0.1:3306/db_example?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"; private final String DB_USERNAME = "testuser"; private final String DB_PASSWORD = "pass"; private Connection conn; public void connectAndInsertToDB() { try { // 可选:JDBC4.0+可省略,若保留则用新驱动类 Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { System.out.println("JAVA: Class.forName() error"); e.printStackTrace(); } try { conn = DriverManager.getConnection(URL, DB_USERNAME, DB_PASSWORD); System.out.println("数据库连接成功!"); // 此处可添加数据插入逻辑 } catch (SQLException e) { System.out.println("Error in initializing a connection to MYSQL DB"); e.printStackTrace(); } }
额外提示
- 若使用Spring Boot,建议通过
application.properties/application.yml配置数据源,而非手动调用DriverManager,更规范且易维护。 - 使用数据库连接后,记得通过try-with-resources语法关闭资源,避免连接泄漏。
内容的提问来源于stack exchange,提问作者user5139637
相关产品推荐
相关产品推荐

