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

相关推荐
vistaup9 分钟前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵15 分钟前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动15 分钟前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>24 分钟前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
Rainman博11 小时前
WMS-窗口relayout&FinishDrawing
android
baidu_2474386113 小时前
Android ViewModel定时任务
android·开发语言·javascript
有位神秘人13 小时前
Android中Notification的使用详解
android·java·javascript
·云扬·14 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
天马379814 小时前
MySql9 免安装版_配置和启动_MySql9安装
adb·mysql9 免安装版·mysql9安装
独自破碎E15 小时前
【BISHI9】田忌赛马
android·java·开发语言