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

MySQL 忘記 root 密碼三種重置方案(含 skip-grant-tables 詳解)

     編輯:MySQL 綜合教學

MySQL 忘記 root 密碼?三種重置方案讓你秒恢復存取

新安裝 MySQL 時 root 可能有隨機密碼,或因久未登入忘記密碼。本文提供三種重置方案,涵蓋 Linux/Windows,附常見錯誤排查。

方案一:查看自動生成的隨機密碼(MySQL 5.7+)

cat /root/.mysql_secret
# 輸出範例:The random password for root is: xYz9#AbC
mysql -u root -p'xYz9#AbC'

首次登入後建議立即修改密碼。

方案二:mysqld_safe --skip-grant-tables 臨時跳過權限(通用)

# 1. 停止服務
service mysqld stop

# 2. 跳過授權表啟動
mysqld_safe --skip-grant-tables &

# 3. 無密碼登入
mysql -u root

# 4. 重置密碼
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;

# 5. 正常重啟
service mysqld restart

注意:MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。

方案三:修改 my.cnf 永久加入 skip-grant-tables(較不推薦)

# 1. 編輯配置
vim /etc/my.cnf
[mysqld]
skip-grant-tables

# 2. 重啟
service mysqld restart

# 3. 登入重置(同方案二步驟 3-4)

# 4. 註釋掉 skip-grant-tables 並重啟
# 5. 正常登入驗證

首次登入可能遇到的錯誤

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

解決:

SET PASSWORD = PASSWORD('NewPass123!');
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

Windows 環境對應操作

  1. 找到 my.ini(通常在安裝目錄)
  2. [mysqld] 區段加入 skip-grant-tables
  3. 服務管理器重啟 MySQL 服務
  4. CMD 進入 bin 目錄執行 mysql -u root
  5. 同樣執行 UPDATE/FLUSH PRIVILEGES
  6. 移除 skip-grant-tables 並重啟服務

安全建議

  • 重置後務必移除 skip-grant-tables,否則任何人可免密登入
  • 執行 mysql_secure_installation 移除匿名用戶、禁止 root 遠端登入、刪除 test 庫
  • 使用強密碼並定期輪換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved