在 Linux 系統管理 MySQL 資料庫時,定期變更 root 密碼是維護安全的基本操作。本文整理了四種常見且有效的修改方式,適用於不同場景需求。
此為最標準的 SQL 方式,需先以 root 身分登入 MySQL 再執行指令。
mysql -u root -p
登入成功後,執行以下命令即可將密碼設定為新值(例:654321):
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('654321');
說明:MySQL 5.7.6 以降版本建議使用 ALTER USER 語法,但 SET PASSWORD 仍相容。
適合撰寫自動化腳本或快速單行操作,語法如下:
mysqladmin -u root -p'舊密碼' password '新密碼'
範例:將密碼從 123456 變更為 654321
mysqladmin -uroot -p123456 password "654321"
注意:-p 後直接接舊密碼中間無空格;若舊密碼為空,可省略 -p 參數。
透過 SQL 直接修改系統表,適合批次處理或特殊需求。
mysql -uroot -p
進入後執行:
USE mysql;
UPDATE user SET authentication_string=PASSWORD('654321') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
補充:MySQL 5.7 之後 password 欄位改名為 authentication_string,舊版本用 password 即可。
當完全遺失 root 密碼時,需停止服務並以 --skip-grant-tables 模式啟動。
service mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root
USE mysql;
UPDATE user SET authentication_string=PASSWORD('654321') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
QUIT;service mysqld restart
安全提醒:完成重置後,務必確認 --skip-grant-tables 已移除,避免安全風險。