遺忘 MySQL root 密碼是常見狀況。本文提供 Windows 與 Linux/Unix 兩大平台的完整重置流程,並整理多種修改密碼的替代方案,助你快速恢復存取權限。
透過 --skip-grant-tables 參數啟動 MySQL,暫時繞過權限驗證,進入系統後更新 mysql.user 表的密碼欄位,最後重新啟動服務生效。
以系統管理員身分開啟「服務」,停止 MySQL 服務。
開啟命令提示字元,切換至 MySQL bin 目錄(例:C:\mysql\bin):
mysqld-nt --skip-grant-tables
# 或
mysqld --skip-grant-tables
說明:mysqld-nt.exe為 Windows 服務版本,mysqld.exe為主控台版本,二擇一即可。
方法 A(mysqladmin):
mysqladmin -u root flush-privileges password "newpassword"
mysqladmin -u root -p shutdown
方法 B(SQL 指令,較通用):
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('新密碼') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;
關閉跳過權限的執行個體,透過服務管理員或 net start mysql 正常啟動,即可使用新密碼登入。
kill $(cat /var/run/mysqld/mysqld.pid)
mysqld_safe --skip-grant-tables &
mysqladmin -u root flush-privileges password "newpassword"
正常啟動 MySQL 服務(如 systemctl start mysqld 或 /etc/init.d/mysql start)。
-- 1. UPDATE 直修 user 表
UPDATE user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
-- 2. mysqladmin 指令
mysqladmin -u root -p PASSWORD mypasswd
-- 3. SET PASSWORD 語法
SET PASSWORD FOR 'myuser'@'localhost' = PASSWORD('mypasswd');
-- 4. GRANT 重新授權並指定密碼
GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
Password 欄位改名為 authentication_string,SQL 語法需調整。FLUSH PRIVILEGES 使權限生效。