萬盛學電腦網

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

MySQL ERROR 1045 密碼重置:兩種權限繞過方案(Debian 維護賬戶 / Skip-Grant-Tables)

錯誤原因

ERROR 1045 (28000): Access denied for user 'root'@'localhost' 表示用戶名/密碼不匹配,通常是忘記 root 密碼。

方法一:利用 Debian 系統維護賬戶(Debian/Ubuntu 專用)

Debian 系安裝會自動創建 debian-sys-maint 賬戶,密碼存放在 /etc/mysql/debian.cnf。

# 1. 讀取密碼
cat /etc/mysql/debian.cnf
# [client]
# user = debian-sys-maint
# password = xxxxxxxx

# 2. 以維護賬戶登入
mysql -u debian-sys-maint -p
# 輸入上述密碼

# 3. 修改 root 密碼
UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;

# 4. 用新密碼登入驗證
mysql -u root -p

方法二:跳過權限表啟動(通用 Linux/Windows)

  1. 停止服務:service mysql stop / net stop mysql
  2. 以跳過權限模式啟動:
    • Linux:mysqld_safe --skip-grant-tables --skip-networking &(--skip-networking 禁止外部連入,安全第一)
    • Windows:mysqld --skip-grant-tables --skip-networking
  3. 無密碼登入並修改:
    mysql -u root
    USE mysql;
    UPDATE user SET Password=PASSWORD('newpassword') WHERE User='root';
    FLUSH PRIVILEGES;
    QUIT;
    
  4. 重啟服務:正常啟動 MySQL,用新密碼登入。

安全提示

  • 生產環境務必加 --skip-networking,防止無授權訪問。
  • 修改完成後立即執行 FLUSH PRIVILEGES 刷新權限緩存。
  • 若使用 init-file 方式(將 SQL 寫入文件啟動時加載),記得啟動後刪除文件防洩露。
copyright © 萬盛學電腦網 all rights reserved