本人是去年下載的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以上的版本還會遇到什么坑,且學且總結吧