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 的解决办法】
推荐阅读
- c#|11、C#处理程序异常的技术
- [15]爬虫时碰到的IOError: [Errno ftp error] [Errno 10060]错误的原因以及解决方法
- javaweb|用quartz开发调度任无法注入bean,出现空指针问题
- 不支持的特性: getMetaData,问题解决
- java|java自定义异常类以及全局log打印
- 后端|ClassNotFoundException 和 NoClassDefFoundError 有什么区别()
- 网站有时能访问到 有时不能 Net::ERR_INCOMPLETE_CHUNKED_ENCODING