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

相关推荐
chen_mangoo2 小时前
HDMI简介
android·linux·驱动开发·单片机·嵌入式硬件
阿里-于怀2 小时前
AgentScope AutoContextMemory:告别 Agent 上下文焦虑
android·java·数据库·agentscope
Larry_Yanan3 小时前
Qt安卓开发(三)双摄像头内嵌布局
android·开发语言·c++·qt·ui
粲然忧生3 小时前
腾讯云终端性能监控SDK正式上线,为鸿蒙开发适配保驾护航
android·腾讯云·harmonyos
我命由我123453 小时前
Kotlin 开发 - Kotlin Lambda 表达式返回值
android·java·开发语言·java-ee·kotlin·android studio·android-studio
FrameNotWork3 小时前
Android Camera HAL实现windows摄像头显示:从黑屏到彩色照片的完整攻坚
android
舰长1154 小时前
win安装mysql8.0最新版本
adb
PyHaVolask5 小时前
CSRF跨站请求伪造
android·前端·csrf
走在路上的菜鸟5 小时前
Android学Flutter学习笔记 第五节 Android视角认知Flutter(插件plugins)
android·学习·flutter