Navicate链接Mysql报错2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded

2024-09-22 13:51:15 浏览数 (3)

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;

0 人点赞