首頁 >後端開發 >PHP問題 >php連mysql8報錯怎麼辦

php連mysql8報錯怎麼辦

藏色散人
藏色散人原創
2023-01-18 10:28:013689瀏覽

php連mysql8報錯的解決方法:1、在「/etc/my.cnf」中將「mysql_native_password」前面的註解關掉;2、進入mysql中,以「mysql_native_password」的方式更新密碼即可。

php連mysql8報錯怎麼辦

本教學操作環境:CentOS 7系統、mysql8版、DELL G3電腦

php連mysql8報錯怎麼辦?

PHP連接MYSQL8失敗的解決方法


php連mysql8報錯怎麼辦

##0x01 問題晚上群組裡有學生說php炸了,兩小時沒弄出來。

php連mysql8報錯怎麼辦

怎麼看都沒啥問題,反正一直連線失敗。

讓他加了mysqli_error()也沒輸出,看了PHP相關元件,看了mysql日誌都沒反應,由於是雲端主機,還嘗試把localhost改成127.0.0.1

,仍然無果。


然後去看了下mysql版本,

mysql8

,對於現在還在用mysql5的人簡直太難了,於是去查了一手

mysql8

的更新狀況,於是就把孩子撈起來了,哈哈。 簡單來說,在mysql8

時,出現了一種新的驗證方式

caching_sha2_password,這個方式成為了新的驗證機制,預設在設定密碼的時候也是用的這種方式進行處理的,原有的mysql_native_password被替換掉了。這就是為什麼php

連不上的原因。

詳細資訊可以看這個連結:

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching -sha2-password

0x02 解決1、在/etc/my.cnf(學生用的
centos php連mysql8報錯怎麼辦)中將

mysql_native_password.

前面的註解關掉。即改回老的驗證方式:<pre class="brush:php;toolbar:false">[mysqld] default_authentication_plugin=mysql_native_password</pre>2、進入mysql中,以mysql_native_password的方式更新密碼即可。 <pre class="brush:php;toolbar:false">mysql&gt;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; mysql&gt;flush privileges;</pre>或可以新增加一個使用者。

mysql>CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
mysql>flush privileges;
php連mysql8報錯怎麼辦這樣問題就成功解決了。

0x03 後續後來想了下,總不能用

php
就不能使用新驗證方式阿,那這不是雞肋了,所以以###php###的方式肯定也可以解決的,於是又去看了下,確實有所發現。 ############確實有新的元件###mysql_xdevapi###可以支持,而在###php7.2.4###之前無論是###php PDO###還是###php mysqli###都不能支援新的驗證方式。 ############由於問題已經解決了,這個方法就沒有再去嘗試了,等以後用的時候再試吧,記錄下來! ######推薦學習:《###PHP影片教學###》######

以上是php連mysql8報錯怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn