定期更換資料庫根帳號密碼是資安基本功。MySQL 提供多種修改密碼的途徑,適用於不同場景。本文整理四種主流方法,並詳細說明忘記 Root 密碼時的緊急重置流程,助你輕鬆掌控資料庫存取權限。
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
適用於已知當前密碼、需在 SQL 介面內快速變更的情境。
# 首次設定密碼(root 原本無密碼) mysqladmin -u root password "newpass" # 已有密碼時變更 mysqladmin -u root -p oldpass password "newpass"
無需進入 MySQL Shell,適合腳本自動化部署。
mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
底層操作,理解權限表結構時可用;務必執行 FLUSH PRIVILEGES 使變更立即生效。
當完全忘記 Root 密碼,可透過跳過權限驗證模式進入資料庫重置:
mysqld_safe --skip-grant-tables & 啟動臨時實例(不驗證密碼)。mysql -u root mysqlmysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
安全提醒:--skip-grant-tables 會暫時關閉所有權限檢查,僅在受信任的內網環境短暫使用,操作完成後務必立即重啟正常模式。
| 方法 | 適用場景 | 是否需舊密碼 | 生效方式 |
|---|---|---|---|
| SET PASSWORD | SQL 介面互動式修改 | 是 | 即時 |
| mysqladmin | 命令列/自動化腳本 | 視情況 | 即時 |
| UPDATE user 表 | 批次/底層控制 | 是 | 需 FLUSH PRIVILEGES |
| Skip Grant Tables | 忘記密碼緊急救援 | 否 | 重啟服務後生效 |
--defaults-extra-file 指向受保護的設定檔。