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

Windows 下 MySQL 忘記 Root 密碼重置全攻略(5.0/5.1+/8.0 通用)

     編輯:MySQL 綜合教學

通用核心原理

啟動 MySQL 時加入 --skip-grant-tables 跳過權限驗證,以免密碼登入,修改 mysql.user 表重置密碼,再正常重啟。

方法一:命令列手動操作(全版本適用)

  1. 停止服務:
    net stop mysql
    # 或 net stop mysql57 / mysql80 視服務名而定
  2. 啟動跳過權限模式(新開 CMD 視窗):
    cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
    mysqld --skip-grant-tables --skip-networking
    --skip-networking 防止外部連入修改期間被惡意利用。
  3. 另開 CMD 免密登入:
    mysql -u root
  4. 重置密碼:
    -- MySQL 5.7 / 8.0
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
    -- 或
    UPDATE mysql.user SET authentication_string = NULL WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
    
    -- MySQL 5.6 / 5.0
    UPDATE mysql.user SET Password = PASSWORD('NewStrongPass123!') WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES;
  5. 結束 --skip-grant-tables 進程:任務管理器殺掉 mysqld.exe。
  6. 正常啟動驗證:
    net start mysql
    mysql -uroot -p'NewStrongPass123!'

方法二:初始化檔案法(MySQL 5.7+ 推薦)

  1. 建立 C:\mysql-init.txt:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
  2. 停止服務,啟動帶初始化檔:
    mysqld --init-file=C:\\mysql-init.txt --console
  3. 服務啟動完成後密碼已重置,正常重啟服務。

方法三:my.ini 配置法(永久免密,不建議生產)

[mysqld]
skip-grant-tables
# 重啟後免密登入改密,改完註釋掉重啟

常見坑點

  • 權限不足: CMD 需以**系統管理員身份運行**。
  • 服務名不對: sc query state= all | findstr mysql 確認確切服務名。
  • 8.0 caching_sha2_password: 老版本客戶端(Navicat 11/Workbench 6.3)無法連線,需 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';。
  • 多實例: 指定 --defaults-file="C:\my.cnf" 指向正確配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved