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错误。

相关推荐
灵感菇_6 小时前
Android Service全面解析
android·service·四大组件
alexhilton7 小时前
Jetpack ViewModel内幕:内部机制与跨平台设计
android·kotlin·android jetpack
_李小白9 小时前
【Android FrameWork】延伸阅读: Android应用安装过程
android
光头闪亮亮10 小时前
Android手持机扫码出入库的开发详解-6.APP下载更新
android
光头闪亮亮10 小时前
Android手持机扫码出入库的开发详解-7.SQLite CRUD操作
android
键来大师10 小时前
Android16 设置壁纸出现APK重启问题和悬浮控件等图标变成黑色图框
android·framework·rk3576
_李小白10 小时前
【Android FrameWork】第四十二天:PMS main函数
android
BoomHe11 小时前
Android LMK(Low Memory Killer)机制
android
时光呀时光慢慢走12 小时前
MAUI 开发安卓 MQTT 客户端:实现远程控制 (完整源码 + 避坑指南)
android·物联网·mqtt·c#
成都大菠萝12 小时前
2-2-44 快速掌握Kotlin-函数类型操作
android