1. 程式人生 > 資料庫 >Mac下mysql 8.0.22 找回密碼的方法

Mac下mysql 8.0.22 找回密碼的方法

Mac 最新版 MySQL 8.0.22 找回密碼大全

問題描述:

昨天心血來潮,想在Mac上體驗一下最新版的MySQL的更改密碼的流程,一下子手賤用mysql_native_password替代caching_sha2_password改了plugin之後,再用UPDATE SET來修改authentication_string,還不記得加password(‘new password')函式,從而導致了

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

原因分析:

整件事下來專坑的地方有幾點:

1、password()函式在MySQL 8.0中已被棄用
2、authentication_string欄位下只能是mysql加密後的41位字串密碼,其他的會報格式錯誤. 這也就意味著md5(‘new password')不能起到原來password(‘new password')的功能
3、mysql 8.0 資料庫預設的認證外掛是caching_sha2_password,包括你使用mysqladmin去初始化資料庫也是使用這個的,所以如果想讓我們平常的mysql連線客戶端也可以連線上MySQL8.0的資料庫那就要修改default_authentication_plugin,也就是mysql.user裡面的plugin這column

解決方案:

第一步: 關閉MySQL伺服器

左上角蘋果icon - System Preferences - MySQL - Stop MySQL Server

Mac下mysql 8.0.22 找回密碼的方法

第二步: 用系統管理員許可權跳過MySQL安全認證強行登陸

1.Command + Space
2.Terminal
3.sudo -i
4.cd /usr/local/mysql/bin/
5../mysqld_safe --skip-grant-tables &
6.return (就是鍵盤上的return點一下)
7.這時候MySQL Server再次變成running,可以用ps -ef | grep -v ‘grep' | grep 'mysql'去檢視它的PID以及啟動它的mysqld_safe的PID

8../mysql

截至目前為止,已經順利用安全模式登陸MySQL

Mac下mysql 8.0.22 找回密碼的方法

9. FLUSH PRIVILEGES; (這條語句在這裡是把當前user表的使用者資訊和privilege表的許可權提取到記憶體裡,保證可以順利得到許可權更改user表)
10. 先把user表裡的root的authentication_string設為空字串,再用ALTER user去重新設定密碼
11. 退出MySQL,並用kill -9殺死mysqld_safe,殺死mysql,重新啟動
12. 用新設定的密碼正常登陸

USE mysql;
UPDATE user SET authentication_string = '' WHERE User = 'root';
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。