最近在学mybatis框架时,连接数据库时遇到了如下问题:
Cause: java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password’.
翻译过来就是不能验证插件’caching_sha2_password’.如图
在网上查了资料后大致明白了原因,由于我MySQL升级到了8.0,而8.0改变了 身份验证插件变为’caching_sha2_password’ ,而8.0之前的身份验证方式为“mysql_native_password“,打开 my.ini (或者my.cofg) 可以查看到。有两种比较有效的解决办法:
一 使用老版本的身份验证插件方式
mysql中运行
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ‘用户密码’;
二 使用8.0以后的MySQL驱动
我用的是5.1.41,难怪会出错
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
mysql驱动已经更新适配了caching_sha2_password 的密码规则,升级到最新版本就可以了。既然MySQL都升级到8.0最新版了,MySQL驱动当然也要更新到最新版了,要知道,MySQL驱动就是用来连接数据库的。如果是maven项目的话,引入最新版架包(就算不是最新版的,最起码是8.0以后的),在pom.xml中加入如下代码即可:
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
如果不是maven项目,则需要将最新的8.0以后的驱动架包复制粘贴到lib目录之下即可。
点击下载MySQL驱动8.0.15
其他问题:1 MySQL8以后驱动改为使用
com.mysql.cj.jdbc.Driver
其他问题:2 mysql的时区错误问题
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解决方案:参考https://blog.csdn.net/lovequanquqn/article/details/84105311
MySQL8.0认证插件问题
本文介绍了在使用MyBatis框架时遇到的MySQL 8.0认证插件问题,详细说明了两种解决方法:一是更改MySQL用户的身份验证方式为旧版;二是更新MySQL驱动以兼容新的认证插件。
1758

被折叠的 条评论
为什么被折叠?



