萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL Root 密碼修改、重置與遺忘密碼完整解決方案

方法一:phpMyAdmin 圖形介面(最簡單)

登入 phpMyAdmin → 選擇 mysql 資料庫 → user 表 → 編輯 root 列 → Password 欄位選 PASSWORD() 函數輸入新密碼 → 執行。

方法二:mysqladmin 命令列(需知舊密碼)

mysqladmin -u root -p password 'newpass'
# 輸入舊密碼後完成修改

無法清空密碼,且需連線正常。

方法三:SQL 陳述式(需 root 權限登入)

-- 5.7.6+ 推薦
ALTER USER 'root'@'%' IDENTIFIED BY 'newpass';
-- 或
SET PASSWORD FOR 'root'@'%' = 'newpass';
-- 5.7.6 前
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;

方法四:GRANT 重新授權(自動雜湊)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'newpass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

遺忘 Root 密碼:跳過權限表重置(通用)

  1. 停止 MySQL 服務:net stop mysql (Win) / systemctl stop mysqld (Linux)。
  2. 啟動跳過權限模式:
    • Windows:mysqld --skip-grant-tables --skip-networking
    • Linux:mysqld_safe --skip-grant-tables --skip-networking &
  3. 無密碼登入:mysql -u root
  4. 更新密碼:
    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
    
  5. 正常重啟 MySQL 服務,使用新密碼登入。

Windows 密碼清空(設為空密碼)

mysqld --skip-grant-tables
mysqladmin -u root flush-privileges password ""
mysqladmin -u root -p shutdown  # 提示輸入密碼時直接 Enter

Linux 權限修復(拷貝 user 表檔案後)

chown -R mysql:mysql /var/lib/mysql/mysql/user.*
chmod 600 /var/lib/mysql/mysql/user.*
systemctl restart mysqld

安全建議

  • 刪除匿名帳號:DELETE FROM mysql.user WHERE User='';
  • 禁止遠程 root:DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
  • 執行 mysql_secure_installation 互動式加固。
copyright © 萬盛學電腦網 all rights reserved