遺忘 MySQL 的 root 密碼是資料庫管理員常見的困擾。幸運的是,透過修改設定檔啟用「跳過權限表」模式,即可在無密碼情況下登入資料庫並重置密碼。本文提供詳細的步驟說明,幫助您快速找回控制權。
首先找到 MySQL 的設定檔 my.ini(Windows)或 my.cnf(Linux),在 [mysqld] 區段下新增 skip-grant-tables 參數:
[mysqld]
# These let you safely reset the lost root password.
skip-grant-tables
儲存檔案後,重新啟動 MySQL 服務使設定生效。
此時無需密碼即可連線資料庫。進入 MySQL 命令列後,執行以下 SQL 指令更新 root 密碼(請將 yournewpasswordhere 替換為您想設定的新密碼):
USE mysql;
UPDATE user
SET password = PASSWORD('yournewpasswordhere')
WHERE user = 'root'
AND host = 'localhost';
FLUSH PRIVILEGES;
注意: MySQL 5.7 以上版本密碼欄位為 authentication_string,語法請改為 SET authentication_string = PASSWORD('新密碼')。
密碼重置完成後,務必將 my.ini 中的 skip-grant-tables 移除或註解掉,再次重啟 MySQL 服務,即可恢復正常的權限驗證機制。
此方法利用 MySQL 的權限略過機制,屬於緊急救援手段。完成重置後,請立即移除 skip-grant-tables 並妥善保管新密碼,確保資料庫安全性。