【MySQL8.0填坑】java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password”

MySQL8.0认证插件问题
本文介绍了在使用MyBatis框架时遇到的MySQL 8.0认证插件问题,详细说明了两种解决方法:一是更改MySQL用户的身份验证方式为旧版;二是更新MySQL驱动以兼容新的认证插件。

最近在学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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值