MySQL 的 root 密碼管理是資料庫維護的基礎技能。本文整理了從圖形介面、命令列工具、SQL 語句到緊急災難恢復的多種修改與重置方法,適用於不同場景與權限條件。
登入 phpMyAdmin,選擇 mysql 資料庫的 user 資料表,找到 root 使用者記錄,直接編輯 Password 欄位。務必選擇 PASSWORD 函數 進行加密儲存,否則密碼將以明文保存導致無法登入。
mysqladmin -u root -p password 'new_password'
執行後需輸入舊密碼,隨即將 root 密碼更新為 new_password。若將 root 替換為其他使用者名稱,即可修改該使用者密碼。注意:此法需 mysqladmin 能連線至伺服器,且無法將密碼設為空白。
INSERT INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;
此實際上是建立新使用者 jeffrey,密碼 biscuit。必須使用 PASSWORD() 加密,並執行 FLUSH PRIVILEGES 重載權限。
REPLACE INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;
與 INSERT 類似,若記錄存在則替換,不存在則新增。同樣需 FLUSH PRIVILEGES。
SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
直接修改指定帳號密碼,需使用 PASSWORD() 函數,無需執行 FLUSH PRIVILEGES。
GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
此法不需使用 PASSWORD() 函數,也不需 FLUSH PRIVILEGES。注意:MySQL 的 PASSWORD() 加密方式與 Unix 系統密碼加密不同。
killall -TERM mysqldmysqld_safe --skip-grant-tables &mysql -u rootUSE mysql;
UPDATE user SET Password=PASSWORD('new_pass') WHERE User='root';
FLUSH PRIVILEGES;
bin 資料夾(如 C:\mysql\bin)。mysqld-nt --skip-grant-tablesmysqladmin -u root flush-privileges password "newpassword"
mysqladmin -u root -p shutdown
MySQL 密碼儲存在 mysql.user 表中,對應三個檔案:user.frm(結構)、user.MYD(資料)、user.MYI(索引)。若擁有另一台已知密碼的 MySQL 同版本環境,可複製這三個檔案覆蓋目標伺服器對應目錄(Linux 通常在 /var/lib/mysql/mysql/)。
關鍵後續步驟:
chown -R mysql:mysql user.* && chmod 600 user.*DELETE FROM user WHERE User='' OR Host='%'; FLUSH PRIVILEGES;killall -TERM mysqld → mysqld_safe --skip-grant-tables & → 登入修改 → FLUSH PRIVILEGES → 重啟。提醒:所有修改操作前請務必備份資料庫,生產環境變更建議在維護窗口進行並驗證回滾方案。