docker部署mysql远程连接过程出现1251--Client does not support authentication protocol requested by server 的解决办法

出现这种异常的根本原因是:

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

由于我在拉取mysql镜像时,没有指定版本,所有默认拉取最新版本(我拉取的是8.x版本的)这就使得低版本的Navicat for MySQL或者SQLyog无法远程连接mysql。

主要有两种解决办法:

(1)降低docker拉取的mysql镜像版本号(我这里把版本号降级为5.7.25)

1.1拉取镜像:

docker pull mysql:5.7.25

1.2 运行容器:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=20182022  mysql:5.7.25

或者也可以将主机目录挂载到容器目录

docker run -p 3306:3306 --name mysql -v /web/mysql/conf:/etc/mysql/conf.d -v /web/mysql/logs:/logs -v /web/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=20182022 -d mysql:5.7.25

至此,再用Navicat for MySQL或者SQLyog成功远程连接mysql !!!

2.另外一种方法是使用最新版本的Navicat for MySQL或者SQLyog远程连接mysql

在这里就不做介绍了。

 

另外这篇博客的博主更为详细地描述了解决方案:

https://blog.csdn.net/Hello_World_QWP/article/details/81155136

 

你可能感兴趣的:(异常)