解决Navicat for MySQL 连接 Docker中运行的Mysql出现1251- Client does not support authentication protocol 错误

1、拉取最新的mysql:docker pull mysql

2、配置端口映射以及密码启动mysql:docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d
mysql

3、进入docker中mysql控制台:docker exec -it  406251a4f34d bash

说明:406251a4f34d(运行mysql容器的id,可以通过docker ps 命令查看)

4、mysql -u root -p 输入密码后,进入mysql命令窗口

5、依次输入以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ,这条可以不执行

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新使用本地主机连接的root用户的密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';#更新使用远程主机连接的root用户的密码

FLUSH PRIVILEGES; #刷新权限

说明:%允许来自任何ip的连接 localhost允许本机的连接

7、select host,user,plugin,authentication_string from mysql.user;


8、退出mysql使用:exit;

9、验证成功以及原理:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,而我使用的Navicat 版本使用mysql_native_password验证插件,两个插件不兼容导致了登录异常。当然还有另外一种办法就是下载最新的Navicat 。

解决Navicat for MySQL 连接 Docker中运行的Mysql出现1251- Client does not support authentication protocol 错误_第1张图片

你可能感兴趣的:(解决Navicat for MySQL 连接 Docker中运行的Mysql出现1251- Client does not support authentication protocol 错误)