博客 / 詳情

返回

Ubuntu下,MySQL密碼遺失時修改密碼

問題背景

MySQL密碼連接不上,需要重置密碼

解決方案

由於修改密碼本身需要連接到數據庫,因此需要另一個系統賬號來登錄數據庫。

下面是相關步驟:

1. 首先執行以下命令

sudo cat /etc/mysql/debian.cnf

獲取到系統賬號的密碼(注意,禁止修改這個文件!!!)

image

2. 再輸入以下命令

mysql -u debian-sys-maint -p

密碼即剛才截圖中圈出的部分,不同機器密碼不同,要按照實際的填寫!

3. 此時進入mysql的命令行模式,分別輸入以下命令(本文以將密碼設置為root為例,第三條命令設置報錯請移到文章最後)

use mysql;
update user set plugin="mysql_native_password";
update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost';
flush privileges;
exit;

4. 最後重啓mysql,再連接mysql,驗證是否修改成功

sudo service mysql restart
mysql -u root -p

 

若在上述第三步修改密碼時返回ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,則説明由於密碼不符合mysql密碼策略,需要臨時調整策略,或者使用符合策略的密碼,前者操作步驟如下:

1. 在mysql命令行模式下,執行以下代碼,查看mysql的當前密碼策略

SHOW VARIABLES LIKE 'validate_password%';

image

其中的參數説明:

validate_password_check_user_name:默認為OFF,設置為ON的時候表示不能將密碼設置成當前用户名或反向用户名,大小寫敏感(即以root賬號連接時不可設置密碼為root或toor,但是可以設置為Root,無論被設置的是哪個賬號)

validate_password_dictionary_file:默認為空,用於檢查密碼的字典文件的路徑名

validate_password_length:默認為8,密碼的最小長度,也就是説密碼長度必須大於或等於該值

validate_password_mixed_case_count:默認為1,如果密碼策略是中等或更強的,validate_password要求密碼具有的小寫和大寫字符的最小數量。對於給定的這個值密碼必須有那麼多小寫字符和那麼多大寫字符

validate_password_number_count:默認為1,密碼必須包含的數字個數

validate_password_policy:默認為MEDIUM,密碼強度檢驗等級,可以使用數值0、1、2或相應的符號值LOW、MEDIUM、STRONG來指定。(0/LOW:只檢查長度;1/MEDIUM:檢查長度、數字、大小寫、特殊字符;2/STRONG:檢查長度、數字、大小寫、特殊字符、字典文件)

validate_password_special_char_count:默認為1,密碼必須包含的特殊字符個數

注:validate_password_check_user_name和validate_password_policy的校驗是相互獨立的

2. 設置對應的策略值,如降低最小長度和校驗強度等級

set global validate_password_length=4;
set global validate_password_policy=LOW;

3. 再次執行之前失敗的更改密碼語句即可成功

4. 重啓mysql服務之後,修改的策略會自動還原為默認值

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.