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

MySQL 忘記 root 密碼?Linux/Windows 通用重置方案

     編輯:MySQL 綜合教學

MySQL 忘記 root 密碼?Linux/Windows 通用重置方案

核心思路

跳過權限表啟動 MySQL,以免密碼驗證,進入後更新 mysql.user 表的 authentication_string(或舊版 password)欄位,重啟生效。

Linux 環境步驟

  1. 停止服務:systemctl stop mysqld 或 service mysql stop。
  2. 編輯配置:vim /etc/my.cnf,在 [mysqld] 區段添加 skip-grant-tables。
  3. 啟動服務:systemctl start mysqld(此時無需密碼可登入)。
  4. 免密登入:mysql -u root 直接進入。
  5. 更新密碼:
    USE mysql;
    -- MySQL 5.7+ 使用 authentication_string
    UPDATE user SET authentication_string=PASSWORD('NewPass123') WHERE User='root';
    -- 或 5.6 及更早版本
    UPDATE user SET password=PASSWORD('NewPass123') WHERE User='root';
    FLUSH PRIVILEGES;
  6. 移除跳過配置:註釋或刪除 skip-grant-tables。
  7. 重啟服務:systemctl restart mysqld,新密碼生效。

Windows 環境步驟

  1. 以管理員身份打開 CMD,停止服務:net stop mysql。
  2. 編輯 my.ini(通常在安裝目錄或 C:\ProgramData\MySQL\MySQL Server x.y\),在 [mysqld] 下加 skip-grant-tables。
  3. 啟動服務:net start mysql。
  4. 免密登入:mysql -u root。
  5. 執行同上的 UPDATE/FLUSH PRIVILEGES 語句。
  6. 移除 skip-grant-tables,重啟服務。

MySQL 8.0+ 注意事項

  • PASSWORD() 函數已移除,需用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123'; 或直接更新 authentication_string 為 SHA256 雜湊值(較繁瑣),建議用 ALTER USER。
  • 若報錯「Table 'mysql.user' doesn't exist」,確認已執行 FLUSH PRIVILEGES 並重啟。

安全提醒

skip-grant-tables 期間任何人均可免密登入,**務必在安全網絡環境下操作,並盡快恢復配置重啟**。

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