今天在使用navicat连接docker启动的mysql时报错Authentication plugin caching_sha2_password cannot be loaded,一开始还以为是docker的原因,后来找了资料才发现是mysql加密的原因,真是笑掉大牙。
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
我参考的是第二种,解决方法如下
1. 在dokcer 中先切换到mysql环境,登陆MySQL
docker exec -it mysqltest bash
2. 授权并刷新权限
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
3.修改加密规则为NEVER
4. 刷新权限并重置密码
5.连接成功
1.执行步骤如下
1.docker run -p 3306:3306 --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql
2.docker exec -it mysqltest bash
3.mysql -uroot -p
4.GRANT ALL ON *.* TO 'root'@'%';
5.flush privileges;
6.ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
7.ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
8.flush privileges;