忘記 MySQL root 密碼是常見運維事故。本文提供兩種經典恢復方案,涵蓋「替換授權表」與「跳過授權表啟動」兩種思路,適用於 Windows/Linux 多平台環境。
data/mysql 目錄重命名為 oldmysql 備份。data/mysql 複製全新的 mysql 目錄至 data/。oldmysql 內容,確認無惡意竄改;若有備份,執行完整性驗證。--skip-grant-tables 跳過權限驗證(標準做法)# Linux
kill `cat /mysql-data-directory/hostname.pid`
# 或
killall -TERM mysqld
需 root 或同等權限執行。
mysqld_safe --skip-grant-tables &
# 或
/bin/safe_mysqld --skip-grant-tables &mysql -h hostname mysql
# 方式 A:UPDATE 語句
UPDATE user SET password=PASSWORD('new_pass') WHERE user='root';
FLUSH PRIVILEGES;
# 方式 B:mysqladmin
mysqladmin -h hostname -u root password 'new_pass'
# 或
mysqladmin -u root flush-privileges password "new_pass"mysqladmin -h hostname flush-privileges
# 或 SQL 執行
FLUSH PRIVILEGES;
完成後正常重啟 mysqld 即可。
FLUSH PRIVILEGES 使變更即時生效。