(已解决)com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Client does not support authent

异常:com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:Client does not support authentication protocol requested by server;consider upgrading MySQL client

问题原因

mysql8 以前的版本加密规则是mysql_native_password,而mysql8之后,加密规则是caching_sha2_password。
在数据库连接的时候加密规则出现不适配。navicat登录数据库,连接时也可能会出现同样的问题。

解决方法

1、首先在数据库查询一下自己的MySQL版本

SELECT @@VERSION;

运行结果如下:
在这里插入图片描述

2、查询自己的加密规则

SELECT user,host,plugin from mysql.user 

可以看到此时的加密规则为:
在这里插入图片描述

3、把用户密码登录的加密规则还原成mysql_native_password这种加密方式

alter user 'root'@'localhost' identified with mysql_native_password by 'password';//password是你自己的密码
flush privileges;#刷新权限,使自己的修改生效

再次查询以后可以看到更改后的加密方式为:
在这里插入图片描述
4、问题解决,重新运行即可

猜你喜欢

转载自blog.csdn.net/qq_43928469/article/details/111572331