MySQL root 密碼遺失是常見維運情境。透過跳過權限表啟動服務,即可免密碼登入並重設密碼。以下為標準化操作流程。
停止 MySQL 服務
在終端機執行:
systemctl stop mysqld 或 service mysql stop
以跳過權限模式啟動
mysqld_safe --skip-grant-tables &
此時無需密碼即可登入。
免密登入並修改密碼
另開終端機:
mysql -u root
進入後執行:
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
註:MySQL 5.7+ 欄位為 authentication_string,舊版為 Password。
關閉跳過權限的執行個體
找到 mysqld_safe 進程 PID 並終止:
kill -TERM $(pidof mysqld)
正常啟動並驗證
systemctl start mysqld
使用新密碼登入確認:
mysql -u root -p
mysqld --skip-grant-tables 於命令提示字元啟動。mysql_native_password 外掛,確認 PASSWORD() 函數相容性。若有 phpMyAdmin 等圖形工具,亦可直接編輯 mysql.user 表達成相同目的。