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

MySQL ERROR 1045 (28000) Access Denied 解決方案:跳過權限表重置 root 密碼

     編輯:MySQL 綜合教學

MySQL ERROR 1045 (28000) Access Denied 解決方案:跳過權限表重置 root 密碼

常見錯誤現象

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 密碼、權限表損壞、或新安裝後未設定密碼即嘗試連線。

Windows 環境下標準修復流程(親測有效)

  1. 找到並編輯配置檔
    定位 my.ini(通常在 MySQL 安裝目錄或 C:\ProgramData\MySQL\MySQL Server X.Y\),使用記事本以管理員身分開啟。
  2. 在 [mysqld] 區段新增 skip-grant-tables
    搜尋 mysqld 關鍵字,在其下方新增一行:
    skip-grant-tables
    存檔。若提示無權限存檔,可先複製到桌面修改後再覆蓋回原處。
  3. 重啟 MySQL 服務
    服務管理器(services.msc)重啟 MySQL 服務,或命令列:
    net stop mysql && net start mysql
  4. 免密碼登入並重置密碼
    cmd> mysql -u root -p
    Enter password:  (直接按 Enter)
    mysql> USE mysql;
    mysql> UPDATE user SET authentication_string=PASSWORD('123456') WHERE User='root';
    mysql> FLUSH PRIVILEGES;

    注意: MySQL 5.7+ 密碼欄位為 authentication_string,5.6 及舊版為 password。若 PASSWORD() 函數被移除(8.0+),請改用:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

  5. 移除 skip-grant-tables 並重啟
    編輯 my.ini 刪除該行,存檔,重啟 MySQL 服務。此後使用新密碼正常登入:
    mysql -u root -p123456

Linux 環境快速參考

# 1. 編輯 /etc/my.cnf,[mysqld] 下加入 skip-grant-tables
# 2. systemctl restart mysqld
# 3. mysql -u root
mysql> FLUSH PRIVILEGES;  -- 必須先執行
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 4. 移除 skip-grant-tables,重啟服務

安全提醒

  • skip-grant-tables 會完全關閉權限驗證,**任何人**均可免密登入,務必在內網安全環境下操作,完成後立即移除並重啟。
  • 生產環境建議配置 bind-address=127.0.0.1 限制本機連線,或使用防火牆限制存取來源。
  • 定期備份 mysql 系統庫,避免權限表損壞導致無法啟動。

此方法適用於 MySQL 5.5~8.0 版本,是忘記 root 密碼或權限異常時的標準急救手冊。

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