php7連接mysql8


最近因為剁手買了mac所以在mac上搭建lnmp環境。

剛好看到mysql從5.7跳到8,性能據說快上一倍,果斷嘗鮮!

lnmp基本都弄好了,但是到用php連接Mysql這一步出了岔子。

 

出錯原因

mysql8使用caching_sha2_password的身份驗證機制

以往的驗證機制則是mysql_native_password

 

解決方法

sudo vim /etc/my.cnf 

(mysql8默認沒有配置文件,這個得新建)

 

添加:

 [mysqld]

 default_authentication_plugin=mysql_native_password

 

但是這樣還沒完全解決,因為這樣只對修改配置並重啟Mysql后的新建用戶有效

而最初創建的root用戶依然是caching_sha2_password的身份驗證機制

修改配置並重啟后新建一個用戶,可以令其密碼與root密碼相同,供后續使用(這一步也可以驗證配置是否生效,生效的話加密后的字符串應跟root密碼不同)】

  (新建用戶:CREATE USER ‘新用戶名’@‘localhost' IDENTIFIED BY ‘密碼’;)

 

 

以下修改操作前請備份!!

這個可以在mysql數據庫中的user表直接將root用戶的plugin改為mysql_native_password

同時把對應的authentication_string改為新用戶加密后的密碼

順利的話這個時候重啟mysql就可以了,如果可以了就不用往下看了

 

 

然而這個時候我又剛好腦抽了,改authentication_string的時候沒備份,改下去重啟后就連接不上了。

無奈,只好修改密碼(后來發現是我原來密碼沒有刪除干凈,導致改的密碼不對。暈。)

 

先是修改配置文件:

[mysqld]

skip-grant-tables  #加了這行

default_authentication_plugin=mysql_native_password

 

然后重啟mysql

這時候可以登錄進去修改root密碼

alter user 'root'@'localhost'IDENTIFIED BY ‘新密碼’;

 

最后記得去掉skip-grant-tables並重啟Mysql


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM