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

MySQL 1045 錯誤 (Access Denied) 根因分析與三種重置密碼方案

     編輯:MySQL 資料庫相關知識

MySQL 1045 錯誤表示認證失敗,常見於密碼遺忘、權限表損壞、Host 不匹配。本文提供 Linux/Windows 通用的三種重置 Root 密碼方案:--skip-grant-tables、Debian 維護帳號、Windows 命令行直連。

錯誤現象

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

方案一:通用 --skip-grant-tables (Linux/Unix)

# 1. 停止服務
systemctl stop mysqld
# 或 /etc/init.d/mysql stop

# 2. 跳過權限表啟動 (後台)
mysqld_safe --skip-grant-tables --skip-networking &

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

# 4. 修改密碼 (MySQL 5.7+)
USE mysql;
UPDATE user SET authentication_string = PASSWORD('newpwd') WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

# 5. 正常重啟
systemctl restart mysqld
# 驗證
mysql -u root -p'newpwd'

注意:MySQL 5.7 欄位為 authentication_string,5.6 為 Password;8.0 建議 ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpwd';。

方案二:Debian/Ubuntu 專用 debian-sys-maint 帳號

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

mysql -u debian-sys-maint -p'xxxxxxxx'
UPDATE mysql.user SET authentication_string = PASSWORD('newpwd') WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

原理:系統安裝時自動創建擁有最高權限的維護帳號,不受 Root 密碼影響。

方案三:Windows 命令行直連

# 1. 管理員 CMD 停止服務
net stop mysql

# 2. 跳過權限啟動
cd D:\mysql\bin
mysqld --skip-grant-tables --console
# 保持窗口開啟

# 3. 新開 CMD 修改密碼
mysqladmin -u root flush-privileges password "newpwd"

# 4. 重啟服務
net start mysql

其他常見 1045 根因與排查

原因排查命令解決
Host 不匹配 (用戶僅允許 localhost)SELECT User, Host FROM mysql.user WHERE User='root';CREATE USER 'root'@'%' IDENTIFIED BY 'pwd'; GRANT ALL ON *.* TO 'root'@'%';
密碼插件不匹配 (caching_sha2_password vs mysql_native_password)SELECT plugin FROM mysql.user WHERE User='root';ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';
權限表損壞CHECK TABLE mysql.user;從備份恢復 mysql 库或重新初始化
連接數耗盡SHOW PROCESSLIST;Kill 空閒連接、調大 max_connections

預防建議

  • 使用密碼管理器存儲 Root 密碼。
  • 建立專用運維帳號 (如 admin@10.0.0.%) 替代 Root 日常運維。
  • 定期演練密碼重置流程,確保文檔與腳本可用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved