最近由於剁手買了mac因此在mac上搭建lnmp環境。php
恰好看到mysql從5.7跳到8,性能聽說快上一倍,果斷嚐鮮!mysql
lnmp基本都弄好了,可是到用php鏈接Mysql這一步出了岔子。sql
出錯緣由:數據庫
mysql8使用caching_sha2_password的身份驗證機制vim
以往的驗證機制則是mysql_native_password性能
解決方法:加密
sudo vim /etc/my.cnf
(mysql8默認沒有配置文件,這個得新建)spa
添加:code
[mysqld] default_authentication_plugin=mysql_native_password
可是這樣還沒徹底解決,由於這樣只對修改配置並重啓Mysql後的新建用戶有效blog
而最初建立的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