首先,我們要先了解MySQL密碼儲存的方式。 MySQL將密碼儲存為加密後的雜湊字串,這個過程是透過使用SHA1()加密函數和一個叫做Salt的隨機字串來完成的。由於MySQL密碼的加密過程是不可逆的,因此我們需要實作一些特定的措施才能夠還原它。
方法一:使用root使用者修改密碼
如果您具有root權限,可以使用下列步驟來修改密碼:
1.以root身分登入MySQL伺服器
mysql -u root -p
2.輸入root使用者密碼
3.進入MySQL命令列
4.進入mysql命令列後,使用下列指令來修改root使用者密碼:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
#請將「new_password」替換為您要設定的新密碼,並確保在MySQL命令列的末尾添加分號;
5.退出MySQL,並使用新密碼重新登入
在使用MySQL時,root使用者俱有最高的權限,因此如果您知道root使用者的密碼,那麼修改MySQL的密碼就變得非常簡單了。
方法二:重設MySQL密碼
如果您無法透過root使用者來修改密碼,或者根本不知道root密碼,那麼重設MySQL密碼可能是您的最佳選擇。以下是兩種常用的重設MySQL密碼的方法:
方法1:使用skip-grant-tables重設MySQL密碼
這種方法將跳過MySQL的使用者認證過程,並允許您無需提供密碼就可以登入MySQL。以下是具體步驟:
1.停止MySQL服務
sudo systemctl stop mysql
2.執行以下指令以跳過MySQL的使用者認證流程:
sudo mysqld_safe --skip-grant-tables &
3.以root身分登入MySQL伺服器
mysql -u root
4.在進入MySQL命令列後,使用以下命令來修改密碼:
mysql> UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root';
請將「new_password」替換為您要設定的新密碼,並確保在MySQL命令列的末尾添加分號;
5.刷新mysql.user表
mysql> FLUSH PRIVILEGES;
6.退出MySQL,並重新啟動MySQL
#sudo systemctl start mysql
7.使用新密碼重新登入MySQL
方法2:使用重設腳本重設MySQL密碼
這個方法需要您以root身分執行腳本,並且需要知道MySQL的資料檔案所在位置。以下是具體步驟:
1.停止MySQL服務
sudo systemctl stop mysql
2.找到MySQL的資料檔
預設情況下,MySQL將其資料檔案儲存在/var/lib/mysql目錄中。執行下列指令可以找到資料檔案的確切位置:
sudo find / -name "*.frm"
3.建立重設腳本
請使用以下指令將以下程式碼儲存到resetmysql.sh檔案中:
#!/bin/bash /usr/sbin/mysqld --skip-grant-tables --skip-networking & sleep 5s mysql -u root <<EOF UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; EOF killall mysqld sleep 5s /usr/sbin/mysqld --skip-networking &
請將「new_password」替換為您要設定的新密碼。
4.執行腳本重設MySQL密碼
使用下列指令以root權限執行重設腳本:
##sudo bash resetmysql.sh
sudo systemctl start mysql
以上是mysql密碼忘了怎麼修復的詳細內容。更多資訊請關注PHP中文網其他相關文章!