萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL root 密碼修改與遺忘重置全平台指南(Windows/Linux)

已知舊密碼:三種修改方式

1. mysqladmin(命令列)

# 首次設定密碼
mysqladmin -u root password 'newpass'

# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'

2. SQL 更新 user 表

mysql -u root -p
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

※ MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。

3. SET PASSWORD 語法

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';  -- 5.7.6+

忘記 root 密碼:skip-grant-tables 重置流程

Linux / Unix

  1. 停止服務:systemctl stop mysqld 或 service mysql stop
  2. 跳過權限啟動:mysqld_safe --skip-grant-tables --skip-networking &
  3. 免密登入修改:
    mysql -u root
    FLUSH PRIVILEGES;  -- 必須先執行,否則 UPDATE 無效
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
    EXIT;
    
  4. 正常重啟:systemctl restart mysqld

Windows

  1. 服務管理器停止 MySQL 服務。
  2. 命令列(管理員)進入 bin 目錄:mysqld --skip-grant-tables --skip-networking
  3. 另開視窗:mysql -u root → 同樣執行 FLUSH PRIVILEGES; ALTER USER...
  4. 關閉第一個視窗(Ctrl+C),服務管理器重新啟動 MySQL。

極端情況:複製 user 表檔案恢復(不推薦常規使用)

將已知密碼實例的 user.frm/.MYD/.MYI 複製覆蓋目標實例 datadir/mysql/,修正擁有者 chown mysql:mysql 與權限 chmod 660,重啟後登入再修改密碼。注意版本相容性與檔案權限問題。

安全收尾

DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE Host='%';
FLUSH PRIVILEGES;

移除匿名帳號與通配符主機,縮小攻擊面。

copyright © 萬盛學電腦網 all rights reserved