开门见山,宜春不多哔哔,出现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
启动并创建容器的时候一样要指定版本,不然会默认下载和启动最新版本【这是个巨坑】
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车,咋们走!最主要的是一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔…