Navicat连接MySql 1251 - Client does not support authentication protocol requested by server

问题描述
  使用navicat连接Mysql数据库报如下图所示错误:
Navicat连接MySql 1251 - Client does not support authentication protocol requested by server_第1张图片

原因
  mysql8.0之前版本加密规则是mysql_native_password,而在mysql8之后的加密规则是caching_sha2_password,因此需要修改加密规则。
解决步骤

  1. 进入docker容器,若mysql没有安装在docker中,这一步可跳过。命令如下:
docker exec -it mysql bash
  1. 进入mysql控制台
mysql -uroot -p123456   //123456是你数据库登录密码
  1. 查看加密规则
use mysql;
select user,host,plugin from user where user='root';

Navicat连接MySql 1251 - Client does not support authentication protocol requested by server_第2张图片

可以看到加密规则是caching_sha2_password。

  1. 修改加密规则,依次执行下面命令
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '数据库密码';
flush privileges;  刷新权限
  1. 再次查看加密规则可以发现已经改为mysql_native_password
    Navicat连接MySql 1251 - Client does not support authentication protocol requested by server_第3张图片

  2. 再次通过navicat连接Mysql发现可以登录成功
    Navicat连接MySql 1251 - Client does not support authentication protocol requested by server_第4张图片

你可能感兴趣的:(披荆斩棘,数据库,mysql)