首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Root 密碼重置與修改完整指南

     編輯:MySQL 綜合教學

前言

MySQL 的 root 密碼管理是資料庫維護的基礎技能。本文整理了從圖形介面、命令列工具、SQL 語句到緊急災難恢復的多種修改與重置方法,適用於不同場景與權限條件。

方法一:使用 phpMyAdmin 修改(最直觀)

登入 phpMyAdmin,選擇 mysql 資料庫的 user 資料表,找到 root 使用者記錄,直接編輯 Password 欄位。務必選擇 PASSWORD 函數 進行加密儲存,否則密碼將以明文保存導致無法登入。

方法二:使用 mysqladmin 命令列工具

mysqladmin -u root -p password 'new_password'

執行後需輸入舊密碼,隨即將 root 密碼更新為 new_password。若將 root 替換為其他使用者名稱,即可修改該使用者密碼。注意:此法需 mysqladmin 能連線至伺服器,且無法將密碼設為空白。

方法三:SQL INSERT 新增使用者(需 root 權限)

INSERT INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;

此實際上是建立新使用者 jeffrey,密碼 biscuit。必須使用 PASSWORD() 加密,並執行 FLUSH PRIVILEGES 重載權限。

方法四:SQL REPLACE 替換/新增使用者

REPLACE INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;

與 INSERT 類似,若記錄存在則替換,不存在則新增。同樣需 FLUSH PRIVILEGES。

方法五:SET PASSWORD 語句

SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');

直接修改指定帳號密碼,需使用 PASSWORD() 函數,無需執行 FLUSH PRIVILEGES。

方法六:GRANT ... IDENTIFIED BY 語句

GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';

此法不需使用 PASSWORD() 函數,也不需 FLUSH PRIVILEGES。注意:MySQL 的 PASSWORD() 加密方式與 Unix 系統密碼加密不同。

緊急情境:忘記 Root 密碼時的重置流程

通用步驟(Linux / Unix)

  1. 停止 MySQL 服務:killall -TERM mysqld
  2. 以跳過權限表模式啟動:mysqld_safe --skip-grant-tables &
  3. 無密碼登入:mysql -u root
  4. 執行更新:
USE mysql;
UPDATE user SET Password=PASSWORD('new_pass') WHERE User='root';
FLUSH PRIVILEGES;
  1. 重新正常啟動 MySQL 服務。

Windows 環境具體操作

  1. 以系統管理員身分登入,停止 MySQL 服務。
  2. 進入安裝目錄 bin 資料夾(如 C:\mysql\bin)。
  3. 啟動跳過權限檢查:mysqld-nt --skip-grant-tables
  4. 另開視窗進入同目錄,執行:
mysqladmin -u root flush-privileges password "newpassword"
mysqladmin -u root -p shutdown
  1. 正常重啟 MySQL 服務,即可使用新密碼登入。

進階技巧:複製 user 表文件恢復密碼(跨伺服器遷移)

MySQL 密碼儲存在 mysql.user 表中,對應三個檔案:user.frm(結構)、user.MYD(資料)、user.MYI(索引)。若擁有另一台已知密碼的 MySQL 同版本環境,可複製這三個檔案覆蓋目標伺服器對應目錄(Linux 通常在 /var/lib/mysql/mysql/)。

關鍵後續步驟:

  • 修正檔案擁有者與權限:chown -R mysql:mysql user.* && chmod 600 user.*
  • 重啟 MySQL 服務。
  • 登入後建議刪除匿名帳號與通配主機:DELETE FROM user WHERE User='' OR Host='%'; FLUSH PRIVILEGES;

其他常見方法補充

  • 十六進制編輯器直接修改 user.MYD:風險極高,加密密碼串儲存位置可能不連續,不建議生產環境使用。
  • 官方手冊標準流程:killall -TERM mysqld → mysqld_safe --skip-grant-tables & → 登入修改 → FLUSH PRIVILEGES → 重啟。

提醒:所有修改操作前請務必備份資料庫,生產環境變更建議在維護窗口進行並驗證回滾方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved