MySQL 所有版本通用 (含 5.x/8.x)。
killall -TERM mysqld
# 或 systemctl stop mysqld / service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &
--skip-networking:僅允許本地 Socket 連線,防止無授權狀態下被遠端存取。mysqld_safe,嘗試 /usr/bin/mysqld_safe 或 /usr/local/mysql/bin/mysqld_safe。mysql -u root mysql
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
-- MySQL 5.7+ 欄位名為 authentication_string,5.6 為 Password
FLUSH PRIVILEGES;
QUIT
killall -TERM mysqld
systemctl start mysqld # 或對應啟動指令
# 驗證
mysql -u root -p'newpass' -e "SELECT VERSION();"
caching_sha2_password,手動更新建議用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; (需正常啟動後)。/var/lib/mysql/mysql 目錄。net stop mysql → mysqld --skip-grant-tables --skip-networking → 新視窗執行更新。若有另一個擁有 SUPER 權限的帳號,可直接登入執行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 無需重啟。