Navicate链接Mysql报错2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded
- 报错原因: Navicat不支持MySQL新版本的‘’caching_sha2_password’这种用户登录账户加密方式,所以需要修改root账户的加密方式,修改成Navicat支持的方式‘mysql_native_password’。
mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。
解决方法
因为我的mysql是容器启动,首先我们进入容器
代码语言:javascript复制docker exec -it 208b940789df mysql -u root -p
输入密码
这里,-it参数是为了确保命令在一个交互式的终端中运行。mysql -u root -p是MySQL命令行工具的启动命令,其中-u root指定了以root用户身份登录,-p会提示你输入root用户的密码。
注意,如果你的MySQL容器没有设置密码或者你有其他登录凭据(如不同的用户名或密码),你需要相应地调整这个命令。 如果你的MySQL容器设置了环境变量(如通过docker run命令的-e MYSQL_ROOT_PASSWORD=your_password)来设置root用户的密码,但在执行上述命令时仍然提示你输入密码,你应该输入你在启动容器时设置的那个密码。
如果你忘记了密码,或者你的容器没有设置密码但你需要访问它,你可能需要重置密码或查看你的Docker Compose文件(如果你使用它)或Docker命令来查找是否有关于密码的信息。
查看默认的加密方式;本地用户的加密方式
代码语言:javascript复制show variables like 'default_authentication_plugin';
select host,user,plugin from mysql.user;
网上很多教程的命令是: :就是将mysql用户登录的加密规则修改为mysql_native_password。
修改登录用户的加密规则
代码语言:javascript复制ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
很多人不成功是由于连接的并不是localhost的!和我一样在虚拟机中的mysql服务。可以看到user有2个root,一个%的应该是远程连接的。所以那个的加密方式也要改哦:
再次查看:
代码语言:javascript复制select host,user,plugin from mysql.user;