原因:
這是mysql比較經典的問題,本人在這個問題上也是深受其害,淚奔中。。。
mysql 8.0 版本默認使用 caching_sha2_password 身份驗證插件機制
mysql 8.0以前版本(5.7)使用 mysql_native_password
低版本升級到8.0 驗證方式不變,新用戶使用8.0驗證方式改變,而客戶端不支持新的加密方式
逛完了所有的帖子,給大家提供一些可靠的解決方案。
解決方案:
方案一:針對用戶修改加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
如果執行報錯的話請檢查user和host
mysql> use mysql;
mysql> select user,host from user;
可以改成:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
更新密碼(mysql_native_password模式) ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{NewPassword}';
方案二:修改mysql的配置文件my.ini文件 我的事在安裝目錄下的(C:\ProgramData\MySQL\MySQL Server 8.0)可以參考一下
將下面這行代碼添加在[mysqld]下
default_authentication_plugin=mysql_native_password
然后重啟mysql服務。然而我測試有一點兒小問題。
方案三:創建一個新的用戶,設置新的加密插件方式進行加密,然后賦予權限將數據庫表添加在該用戶可訪問。
具體的自行嘗試一下,原理可行。
溫馨提示:不建議用navicat工具對root用戶加密插件進行操作,博主上次就是這樣搞了之后root用戶就直接掛掉了,說來都是淚啊。
然后開始了修改密碼一區不復返的道路 參考網址https://blog.csdn.net/weixin_42289383/article/details/98039313
另外再說一個非常神奇的事情:以上所有操作都嘗試一個遍之后還是不行,你把電腦的網斷掉變單機(博主拔掉無線網卡),奇跡的事情發生了,什么報錯都沒了,你說氣人不?!讓人哭笑不得。