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 密碼、權限表損壞、或新安裝後未設定密碼即嘗試連線。
my.ini(通常在 MySQL 安裝目錄或 C:\ProgramData\MySQL\MySQL Server X.Y\),使用記事本以管理員身分開啟。mysqld 關鍵字,在其下方新增一行:skip-grant-tablesservices.msc)重啟 MySQL 服務,或命令列:net stop mysql && net start mysqlcmd> 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';
my.ini 刪除該行,存檔,重啟 MySQL 服務。此後使用新密碼正常登入:mysql -u root -p123456# 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 密碼或權限異常時的標準急救手冊。