本人是去年下载的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配置文件
加上这样一句配置语句
>use mysql
> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘你的密码‘;
> FLUSH PRIVILEGES;
你的密码就是你的mysql的root用户密码(也就是你登录用的密码)
然后使用exit;命令退出mysql,重新运行你的php代码,就解决了
说了这么多,这是自己第一次写总结性的问题解决,感觉还行,说不定以后还用得上
不知道未来使用mysql 8.0以上的版本还会遇到什么坑,且学且总结吧