MyBatis学习错误解决方式--MySQL客户端不支持服务器请求的身份验证协议

根据错误信息,该问题由MySQL客户端不支持服务器请求的身份验证协议导致,通常是因为MySQL 8.0及以上版本默认使用caching_sha2_password认证插件,而旧版JDBC驱动不兼容。以下是解决方案:

解决方案

升级JDBC驱动‌
将mysql-connector-java升级到8.0及以上版本(如8.0.33):

xml

XML 复制代码
<!-- 在pom.xml中添加或更新依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

修改MySQL用户认证方式‌

如果无法升级驱动,可修改MySQL用户认证插件为mysql_native_password:

sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

检查数据库连接URL‌

确保连接URL包含时区参数:

xml

Copy Code
<property name="url" value="jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=Asia/Shanghai"/>

关键注意事项

驱动版本兼容性‌:MySQL 8.0+要求JDBC驱动8.0+,否则需修改认证插件。

认证插件修改‌:仅在无法升级驱动时使用,可能影响安全性。

XML配置检查‌:错误信息提示UserMapper.xml可能存在问题,确保XML与Mapper接口方法名一致。

验证步骤

升级驱动后清理项目缓存(如Maven的target目录)。

重启应用并测试数据库操作。

通过以上步骤,应能解决MySQLNonTransientConnectionException错误。

相关推荐
小米渣的逆袭14 小时前
Android ADB 完全使用指南
android·adb
儿歌八万首14 小时前
Jetpack Compose Canvas 进阶:结合 animateFloatAsState 让自定义图形动起来
android·动画·compose
zhangphil15 小时前
Android Page 3 Flow读sql数据库媒体文件,Kotlin
android·kotlin
神探小白牙16 小时前
echarts,3d堆叠图
android·3d·echarts
李白的天不白16 小时前
如何项目发布到github上
android·vue.js
summerkissyou198716 小时前
Android-RTC、NTP 和 System Time(系统时间)
android
小书房16 小时前
Kotlin使用体验及理解1
android·开发语言·kotlin
撩得Android一次心动17 小时前
Android Navigation 组件全面讲解
android·jetpack·navigation
向阳是我17 小时前
Flutter Android 编译错误修复:JVM Target Compatibility 不一致问题记录
android·jvm·flutter
Kapaseker17 小时前
我想让同事知道我很懂 Compose 怎么办?
android·kotlin