遺忘 Root 密碼是常見運維場景。利用 skip-grant-tables 跳過權限驗證,即可免密登入重置密碼,**無需重裝資料庫**。
| 環境 | 配置檔路徑 |
|---|---|
| Windows | %MySQL安裝目錄%\my.ini |
| Linux | /etc/my.cnf |
在 [mysqld] 區段加入:
skip-grant-tables
儲存退出。
| 環境 | 指令 |
|---|---|
| Windows | net stop mysql && net start mysql |
| Linux | /etc/init.d/mysqld restart 或 systemctl restart mysqld |
mysql -uroot -p mysql
# 直接按 Enter 跳過密碼
# 更新密碼(範例設為 123456,請自行修改強密碼)
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
QUIT;
注意: MySQL 5.7+user表無password欄位,改用authentication_string:
UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root';
skip-grant-tables 行mysql -uroot -p'123456'--skip-grant-tablesUPDATE user SET ...安全提醒: skip-grant-tables 期間**任何人可免密以 root 身份登入**,請在內網安全環境下操作,完成後**立即移除參數並重啟**。生產環境建議配合防火牆限制 3306 連接源。