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=20182022mysql: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
【docker部署mysql远程连接过程出现1251--Client does not support authentication protocol requested by server 的解决办法】

    推荐阅读