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

MySQL ERROR 1045 (28000) 拒絕存取錯誤完整解決方案

     編輯:MySQL 資料庫相關知識

錯誤現象

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

典型原因:root 密碼遺失、權限表損壞、或匿名用戶干擾。

核心解決思路:跳過權限驗證 → 重置密碼 → 恢復權限

步驟 1:修改 my.ini 啟用 skip-grant-tables

  1. 找到 my.ini(通常在 MySQL 安裝目錄或 C:\ProgramData\MySQL\MySQL Server x.x\)。
  2. 在 [mysqld] 區段下新增:
    skip-grant-tables
  3. 若儲存受阻,可先剪貼至桌面修改後再覆蓋回原處。

步驟 2:重啟 MySQL 服務

服務管理器(services.msc)重啟 MySQL,或 CMD 執行:

net stop mysql
net start mysql

步驟 3:免密登入並重置 root 密碼

mysql -u root -p
-- 密碼提示直接 Enter

USE mysql;
-- MySQL 5.7+ 使用 authentication_string 欄位
UPDATE user SET authentication_string=PASSWORD('123456') WHERE User='root';
-- 5.6 或較舊版本
UPDATE user SET Password=PASSWORD('123456') WHERE User='root';

FLUSH PRIVILEGES;
QUIT;

步驟 4:移除 skip-grant-tables 並重啟

  1. 編輯 my.ini,刪除或註釋 skip-grant-tables。
  2. 重啟 MySQL 服務。
  3. 用新密碼登入驗證:mysql -u root -p123456。

補充:清理匿名用戶與遠程存取

DELETE FROM mysql.user WHERE User='';
-- 限制 root 僅本地登入
UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;

總結

「跳過授權表 → 重置密碼 → 恢復授權」是解決 1045 錯誤的標準流程。操作完成後務必移除 skip-grant-tables,否則資料庫處於無保護狀態。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved