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 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
Sinclair10 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
雮尘13 小时前
手把手带你玩转Android gRPC:一篇搞定原理、配置与客户端开发
android·前端·grpc
ktl14 小时前
Android 编译加速/优化 80%:一个文件搞定,零侵入零配置
android
alexhilton1 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
冬奇Lab1 天前
InputManagerService:输入事件分发与ANR机制
android·源码阅读
张小潇1 天前
AOSP15 Input专题InputManager源码分析
android·操作系统
RdoZam1 天前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
奥陌陌2 天前
android 打印函数调用堆栈
android
用户985120035832 天前
Compose Navigation 3 深度解析(二):基础用法
android·android jetpack