mysql8的深坑

主要记录下自己的出坑过程,有些其实并不是mysql8的问题,但是由于这个版本产生的阻塞时间最长,所以一并记录;

1-项目代码别人能运行,我本地运行不了

定位后发现是由于本地代码运行数据库连接失败,后来为数据库创建了一个接受所有ip连接的新用户之后,使用该用户进行连接就不会报连接错误了。之所以不去修改root的访问权限,是因为root不能修改自己,暂时不知道怎么改。

 

2-修改完数据库访问权限之后又会报一个新的错误:

MySQL Error: Authentication plugin 'caching_sha2_password' not supported by any of avaliable plugins

这个错误提示是比较明显的。大意为:mysql8数据库服务器中指定需要使用sha2这种算法进行加密,但是目前使用的mysql客户端(可能是可视化工具如:navicat或者代码)并不支持,索引导致失败。

因为sha1加密算法被破解了,所以mysql8之后都升级了成了sha2算法。mysq8默认的认证插件是cacheing_sha2_password插件,原来的版本使用的是mysql_native_password插件,这使得原来的mysql连接客户端出现认证失败的问题。

所以有两种方式可以解决问题:

  • 将服务端的加密方式修改为sha1

    在数据库中执行下面的语句得以解决:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ‘#2017';

  • 强客户端的加密方式修改为sha2

    将客户端的加密方式修改为sha2,例如将mysql-connector-java更换为最新的版本,如果使用一些图形化连接工具,那么可以通过修改配置信息解决。

3-修改完加密方式之后又报创建数据库l连接失败

  排查了一大圈,也没有找出原因,最后指定了一个高版本mysql-connect-java包才解决了问题,具体什么问题无从得知。

posted @ 2018-07-26 14:41  mxgboy  阅读(875)  评论(0编辑  收藏  举报