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

忘記 MySQL root 密碼雙平台解法:Windows net stop + mysqld --skip-grant-tables / Linux systemctl + mysqld_safe 完整步驟

     編輯:MySQL 綜合教學

核心原理

以 --skip-grant-tables 啟動 mysqld,暫時停用權限驗證,免密登入 root,更新 mysql.user 密碼欄位,重啟服務生效。

Windows 步驟

  1. 管理員 CMD:net stop mysql
  2. 進入安裝目錄 bin:cd C:\Program Files\MySQL\MySQL Server 5.x\bin
  3. 啟動跳過權限:mysqld --skip-grant-tables (或 mysqld-nt.exe --skip-grant-tables)
    視窗保持開啟。
  4. **新開 CMD** 免密登入:mysql -u root
  5. 更新密碼 (5.7 前 Password、5.7+ authentication_string):
USE mysql;
-- 5.7 前
UPDATE user SET Password=PASSWORD('NewPass123') WHERE User='root';
-- 5.7+ (8.0 同)
UPDATE user SET authentication_string=PASSWORD('NewPass123') WHERE User='root';
-- 或 8.0.4+ 推薦
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123';
FLUSH PRIVILEGES;
EXIT;
  1. 回第一個視窗 Ctrl+C 停止 mysqld。
  2. 正常啟動:net start mysql
  3. 驗證:mysql -u root -pNewPass123

Linux 步驟 (systemd 現代系統)

  1. 停止服務:systemctl stop mysqld 或 service mysql stop
  2. 建立臨時目錄供 socket/pid:
    mkdir -p /var/run/mysqld; chown mysql:mysql /var/run/mysqld
  3. 跳過權限啟動 (背景):
    mysqld --skip-grant-tables --user=mysql --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock &
  4. 免密登入:mysql -u root --socket=/var/run/mysqld/mysqld.sock
  5. 同樣執行更新密碼 SQL (見上)。
  6. 停止臨時進程:killall mysqld 或 pkill -f "skip-grant-tables"
  7. 正常啟動:systemctl start mysqld
  8. 驗證新密碼。

Ubuntu/Debian apt 安裝特有:無 mysqld_safe

直接用 mysqld --skip-grant-tables,注意 --user=mysql 與 --datadir 指定正確。

通用驗證查詢

SELECT User, Host, plugin, authentication_string FROM mysql.user WHERE User='root';
  • plugin:caching_sha2_password (8.0 預設) / mysql_native_password。
  • 確認 authentication_string 非空。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved