最新的mysql版本为8.0,在mysql8.0中对用户的默认密码加密规则做了修改,和以前使用的加密规则不一致,相对来说应该是更安全了,但是这就造成一个问题,在使用程序连接的时候,如果使用的mysql-driver连接驱动是5.7不是8.0的时候就会出现一系列的错误
其中使用navicat或者程序连接一般连接不上报错为:java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.
简单、直接、粗暴的贴一下解决方案:
-
进入mysql命令行:
在命令行中执行mysql -uroot -p,然后输入root账号的密码,进入mysql命令行. -
修改用户的加密规则
如果使用的是myql-5.7的连接驱动,不想升级程序中的连接驱动,那么就修改加密规则即可,如果不想修改加密规则,那么就将mysq-connector的版本升级到8.0以上即可
-
进入到mysql数据库
use mysql; -
查询user表的账号
select user,host,plugin from user;可以看到,其中的加密规则是caching_sha2_password, root的账号因为已经修改了,所以显示为mysql_native_password
-
修改账号的加密规则:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
说明:-
[email protected]%为账号和指定访问的ip,如果是%就是不限制ip访问,如果是localhost,那么就是只能在mysql所在的服务器访问 -
password为root账号的密码,需自定义
-
-
更新一下密码
因为修改了加密规则,但是之前的密码还是另一个加密规则生成的,所以手动更新一下密码
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;- 刷新权限
FLUSH PRIVILEGES;
-