若從未設定 root 密碼,MySQL 允許無密碼登入,但強烈建議為所有帳號設定密碼。若遺忘 root 密碼,可透過跳過授權表機制重置。本文分別說明 Windows 與 Linux 平台的操作步驟,並提供通用的 --skip-grant-tables 替代方案。
服務管理器 → MySQL → 停止;若非服務模式,用工作管理員強制結束進程。C:\mysql-init.txt),單行寫入:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassWord');C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt--defaults-file:C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld-nt.exe --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" --init-file=C:\mysql-init.txt.pid 檔(常見路徑:/var/lib/mysql/、/var/run/mysqld/、/usr/local/mysql/data/),發送 kill(非 kill -9)停止服務:kill `cat /path/to/host_name.pid`~/mysql-init),內容同 Windows。--init-file 參數啟動:mysqld_safe --init-file=~/mysql-init &停止 MySQL,以 --skip-grant-tables --user=root 重啟(Windows 可省略 --user=root)。連線後執行:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;
此法繞過權限驗證,僅建議在無法使用 --init-file 時採用。