Spring报错:create connection SQLException, url: jdbc:mysql://localhost:3306/mm, errorCode 1251, state

文章讲述了在尝试连接MySQL8.0数据库时遇到的SQLException,原因是使用的mysql-connectjar包版本过低。解决方法是升级jar包至8.0版本以匹配服务器协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

严重: create connection SQLException, url: jdbc:mysql://localhost:3306/mm, errorCode 1251, state 08004
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not suppor

首先将url改成

<property name="url" value="jdbc:mysql://localhost:3306/mm?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC" />

依然报错 

create connection SQLException, url: jdbc:mysql://localhost:3306/mm?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC, errorCode 1251, state 08004
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	

后来发现是mysql-connect的jar包版本不对,我连接的mysql数据库是8.0版本的

然而使用的jar包是5.0版本的。将mysql-connect的jar包版本改为8.0即可

### 解决 JDBC MySQL 创建连接时出现的 SQLException 错误码 1045 状态 28000 当尝试通过 JDBC 建立与 MySQL 数据库的连接时,如果收到错误码 1045 和状态 28000 的 `SQLException`,这通常意味着访问被拒绝。具体来说,可能是由于用户名或密码不正确引起的。 为了处理这个问题,可以采取以下几个措施: #### 修改 URL 参数 确保使用的 JDBC URL 正确无误,并包含了必要的参数来匹配目标数据库的要求。对于 MySQL 8.0 及更高版本而言,在构建 JDBC URL 时应当指定服务器的时间区以及禁用 SSL 验证。例如: ```java String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&useSSL=false"; ``` #### 更新驱动类名 旧版驱动器名称已弃用,应该改为使用新的驱动器名称 `"com.mysql.cj.jdbc.Driver"` 而不是原来的 `"com.mysql.jdbc.Driver"`[^1]。 #### 检查凭证信息 确认所提供的用户名和密码确实有效且具有足够的权限去访问所指明的数据库实例。在 Spring Boot 应用程序中配置数据源时尤其要注意这一点;如果有任何拼写上的失误都会导致认证失败[^2]。 #### 下载最新的 JDBC Driver 从官方站点获取最新版本的 MySQL Connector/J 并将其加入项目的依赖项列表里。这样不仅可以获得更好的兼容性和性能优化,还能避免因过期 API 导致的问题[^3]。 #### 完整示例代码 下面是一个完整的 Java 方法用于建立安全可靠的数据库连接: ```java import java.sql.Connection; import java.sql.DriverManager; public class DatabaseConnection { public static Connection getConnection() throws Exception { String driverName = "com.mysql.cj.jdbc.Driver"; Class.forName(driverName); String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&useSSL=false"; String username = "your_username_here"; // 替换成实际的用户名 String password = "your_password_here"; // 替换成实际的密码 return DriverManager.getConnection(url, username, password); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值