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

MySQL 忘記 Root 密碼通用重置方法(Windows/Linux 完整版)

     編輯:MySQL 資料庫相關知識

整理 Windows 與 Linux 兩大平台 MySQL root 密碼重置通用方案,含 my.ini/my.cnf 配置法與命令行 --skip-grant-tables 法。

通用原理

  1. 啟用 skip-grant-tables 繞過權限檢查。
  2. 免密登入更新 mysql.user 表密碼字段。
  3. FLUSH PRIVILEGES 生效並移除 skip-grant-tables 重啟。

Windows 平台

方法一:修改 my.ini(無需雙視窗)

  1. 編輯 my.ini,[mysqld] 區段加入 skip-grant-tables。
  2. 重啟服務:net stop mysql && net start mysql。
  3. 免密登入:mysql -u root。
  4. 更新密碼:
USE mysql;
UPDATE user SET password = PASSWORD('newpass') WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
  1. 移除 my.ini 中 skip-grant-tables,重啟服務。

方法二:命令行雙視窗(同上文 5.5/5.6)

net stop mysql
d:\usr\local\mysql\bin\mysqld-nt --skip-grant-tables  # 視窗 1
# 視窗 2
d:\usr\local\mysql\bin\mysqladmin -u root flush-privileges password "newpass"
d:\usr\local\mysql\bin\mysqladmin -u root -p shutdown  # 輸入新密碼
net start mysql

Linux 平台

方案一:safe_mysqld

killall -TERM mysqld
safe_mysqld --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET password = PASSWORD('新密碼') WHERE User = 'root';
FLUSH PRIVILEGES; QUIT
service mysql restart

方案二:mysqld 直接啟動(無 safe_mysqld 時,如 Ubuntu apt 安裝)

sudo /etc/init.d/mysql stop
mysqld --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET password = PASSWORD('newpass') WHERE User = 'root';
FLUSH PRIVILEGES; QUIT
sudo /etc/init.d/mysql restart

兩平台核心邏輯一致,**關鍵在於確認密碼字段名**(5.7 用 authentication_string,舊版用 password)。

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