MySQL 的认证插件
提示
navicat 连接 MySQL 8 出现 2059 错误就是和这个东西有关
1. 认证插件
MySQL Server 中有专门的"部件"来验证你所提供密码的正确性:认证插件。MySQL Server 中
有多种认证插件。
在创建一个用户、修改用户密码时,需要指定 MySQL Server 使用那种认证插件来处理这个密
码。 这个感觉有点类似:MySQL 支持多种数据库引擎( Engine ),你在创建表时,需要为表指定某种数据库引擎。
MySQL 8.0.4 之前默认的认证插件是 mysql_native_password ,而从 8.0.4 开始,将默认的
认证插件改成了 caching_sha2_password 。
这也是为什么从 8.0.4 开始不支持 SET PASSWORD FOR ... 的方式更新密码了。
如果你想「影响」认证插件,有 2 种方式:
1. 修改 MYQL SERVER 的配置文件,在配置文件中指定默认的认证插件。
[mysqld]
...
default_authentication_plugin=mysql_native_password
2. 在设置用户密码时,指定处理该用户密码的认证插件,去「覆盖」默认的认证插件。例如:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
2. Navicat 连接 MySQL 出现 2059 错误
由于低版本的 Navicat 使用的数据库驱动版本也比较低,无法配合 MySQL 8.0.4 ( 及以上版
本 ) 的 caching_sha2_password 密码认证插件,因此导致了,你输入了正确的用户名密码也
无法连上 MySQL Server ( 报 2059 错误 ) 。
对于这种情况,有 3 种解决办法:
1. 使用更高版本、更新的 Navicat ;
2. 换别的数据库客户端,例如,sqlyog ;
3. 修改登录用户的密码,其实重点是修改密码是去改密码认证器,改成
mysql_native_password ;