Yang

总结mysql 8.0及以上版本遇到的坑

  本人是去年下载的mysql 8.0.18版本的数据库的,在下载数据库时,和许多小白一样,

以为最新的就是最好的,于是就下载当时的最新版8.0.18版本的mysql,结果就走上了一条

满是坑的数据库使用之路。关于mysql 8.0以上的版本的坑网上也很多,我就说三个让我

印象最深的坑

NO.1

  去年下半年我开始学习Javaweb,Javaweb可以专门写一个Java类去实现与数据库的连接,这个

类中需要使用一条jdbc驱动语句,相信朋友们都已经知道,这就是Class.forName("com.mysql.jdbc.Driver");

由于我是小白,刚开始只知道网上教的就是这么写,直到有一次,老师让我们完成一个向数据库里面添加数据,

我很快写完,结果连接不了数据库,还一直报Loading class `com.mysql.jdbc.Driver'. This is deprecated

这个错导致我调了一下午代码最后也没写出来,最后才知道mysql 8.0以上的版本只能使用这个jdbc驱动

Class.forName("com.mysql.cj.jdbc.Driver");

NO.2

  今年上半年老师要求我们用app完成一个全球疫情的简单数据展示,当我写好代码,一运行,程序报错,

但上网一查报错原因,居然没有,我又仔细的检查了代码,没发现有错,报错原因找不到,app一运行就

闪退,最后我终于发现了原因,不是代码的原因,是因为我的mysql数据库是8.0以上的版本,Android Studio

无法使用8.0以上的mysql-java架包去连接对应的8.0以上的数据库,最后用了5.7版本的mysql-java架包才成功

连接上mysql 8.0.18数据库,唉,足足在这个问题上浪费了一天的时间

NO.3

 这个学期有php课程,这两天需要完成用php代码连接mysql数据库,我按照老师的教程写了一个测试连接的php代码

header('content-type:text/html;charset=utf-8');
$link = mysqli_connect('localhost','root','123');
if(!$link){
    echo "连接失败!";
}
else echo "连接成功";

结果我连接失败了,别人都连接成功了,还好这次报了两个错

(1)mysqli_real_connect(): The server requested authentication method unknown to the client [sha256_password]
(2)The server requested authentication method unknown to the client

上网一查,不用说,估计你们都知道了,对,没错,又是mysql 8.0以上的版本因为新配置导致的问题,解决方法

首先在你的mysql配置文件下的my.ini文件或者没有my.ini,也有可能是mysql数据库目录下的etc/my.cnf配置文件

加上这样一句配置语句

 default_authentication_plugin=mysql_native_password 
然后保存修改,回到桌面,点击此电脑-管理-服务和本地程序-服务,然后找到mysql,关掉mysql服务再重新开启(相当于重启)
让你刚才的配置文件得到修改
然后使用cmd进入mysql的bin目录下,登录mysql(这种教程很多,过程我就不说了),登录成功会进去mysql的命令行,执行以下mysql命令
>use mysql  
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';  
> FLUSH PRIVILEGES;            

你的密码就是你的mysql的root用户密码(也就是你登录用的密码)

然后使用exit;命令退出mysql,重新运行你的php代码,就解决了

 

说了这么多,这是自己第一次写总结性的问题解决,感觉还行,说不定以后还用得上

不知道未来使用mysql 8.0以上的版本还会遇到什么坑,且学且总结吧

posted on 2020-04-30 01:23  yangliuliu  阅读(9000)  评论(6编辑  收藏  举报

导航