最近因為剁手買了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