Docker连接mysql出现1251--Client does not support authentication protocol requested by server的解决

开门见山,宜春不多哔哔,出现1251的主要原因是由于mysql版本的问题mysql8.0版本,与mysql8.0以下版本的加密方式不同,导致错误产生。

我的问题就出在我是mysql5.7版本的。当然决绝办法也是有的,最好的解决办法就是客户端和服务端安装相同版本的mysql,如果觉得安装相同版本的mysql麻烦的一批,当然也可以试着如下操作:

1、以管理员身份运行cmd
在这里插入图片描述
2、通过命令行进入解压的mysql根目录bin
在这里插入图片描述
3、使用以下命令登陆数据库,再输入密码

mysql -uroot -p

在这里插入图片描述
4、更改加密方式(直接复制即可)**切记别忘了复制 “ ;”符号,一定要带上

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

5、更改密码:该例子中 123456为新密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

6、刷新:

FLUSH PRIVILEGES;

效果图参照如下
在这里插入图片描述
在这里插入图片描述
这个时候再去连接MySQL就好了,如果以上可以得到解决就最好不过了,以上操作完成已经成功的读者朋友可以不用再往下看了,你已经解决了!!!

如果还是不行建议客户端和服务端安装相同版本的mysql,下面就以docker安装相同版本的mysql为例进行举例,毕竟大部分服务器软件还是得安装在Linux中比较好。

Docker安装相同版本的mysql

相信基础Docker的命令大家都熟悉,这里只简单概述一下要注意的docker命令,这里以mysql5.7版本为例。

docker pull mysql   默认安装最新版MySQL

因此安装指定的MySQL一定要指定版本如下:

docker pull mysql:5.7

启动并创建容器的时候一样要指定版本,不然会默认下载和启动最新版本【这是个巨坑】

扫描二维码关注公众号,回复: 8485943 查看本文章
docker run -p 3306:3306 --name mysql888 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

以上命令做了端口映射,如果没有这个需求可以不添加对应指令,以上的重点是一定要指定MySQL版本,不然就会默认下载和启动最新版本! 远程连接MySQL的时候,MySQL版本一致、对应映射上3306端口之后,不出意外,都能连接成功!
在这里插入图片描述

如果本文对你有一点点帮助,那么请点个赞呗,谢谢~

最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!

欢迎各位关注我的公众号,里面有一些java学习资料和一大波java电子书籍,比如说周志明老师的深入java虚拟机、java编程思想、核心技术卷、大话设计模式、java并发编程实战…都是java的圣经,不说了快上Tomcat车,咋们走!最主要的是一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔…

在这里插入图片描述

发布了112 篇原创文章 · 获赞 3000 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/qq_44543508/article/details/103830976