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

最近在学mybatis框架时,连接数据库时遇到了如下问题:

Cause: java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password’.

翻译过来就是不能验证插件’caching_sha2_password’.如图
【MySQL8.0填坑】java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password”_第1张图片在网上查了资料后大致明白了原因,由于我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,难怪会出错


    mysql
    mysql-connector-java
    5.1.41

mysql驱动已经更新适配了caching_sha2_password 的密码规则,升级到最新版本就可以了。既然MySQL都升级到8.0最新版了,MySQL驱动当然也要更新到最新版了,要知道,MySQL驱动就是用来连接数据库的。如果是maven项目的话,引入最新版架包(就算不是最新版的,最起码是8.0以后的),在pom.xml中加入如下代码即可:



    mysql
    mysql-connector-java
    8.0.15

如果不是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填坑】java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password”)