首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 忘記 Root 密碼?三步驟快速重置(Windows/Linux 通用)

     編輯:MySQL 資料庫相關知識

    核心原理

    啟動 MySQL 時加入 --skip-grant-tables 參數,暫時跳過權限驗證,以免密碼登入修改 mysql.user 表,最後重啟生效。

    Windows 環境操作步驟

    1. 停止服務:命令列執行 net stop mysql
    2. 跳過權限啟動:進入安裝目錄 bin 資料夾,執行 mysqld-nt --skip-grant-tables(視版本可能為 mysqld.exe),視窗會保持執行狀態
    3. 另開視窗免密登入:mysql -u root
    4. 更新密碼:
    USE mysql;
    UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';
    FLUSH PRIVILEGES;
    EXIT;
    1. 重啟服務:關閉第 2 步視窗(或工作管理員結束 mysqld-nt 進程),執行 net start mysql
    2. 驗證:mysql -u root -p新密碼

    Linux 環境操作步驟

    # 1. 停止服務
    systemctl stop mysqld   # 或 service mysqld stop
    
    # 2. 安全模式啟動(背景執行)
    mysqld_safe --skip-grant-tables &
    
    # 3. 免密登入並改密
    mysql -u root
    USE mysql;
    UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';
    FLUSH PRIVILEGES;
    EXIT;
    
    # 4. 重啟正常服務
    pkill mysqld
    systemctl start mysqld

    常見坑點提醒

    • MySQL 5.7+ 欄位名為 authentication_string,舊版為 Password,請先 DESC user; 確認
    • PASSWORD() 函數在 8.0 已移除,建議改用 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
    • 若報 Access denied,檢查 user.Host 是否包含 localhost、127.0.0.1、%

    一鍵腳本參考(Linux)

    #!/bin/bash
    systemctl stop mysqld
    mysqld_safe --skip-grant-tables &
    sleep 3
    mysql -u root -e "USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; FLUSH PRIVILEGES;"
    pkill mysqld
    systemctl start mysqld
    echo "Root 密碼已重置為 NewPass123!"
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved