首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL Workbench 連接報錯「Access denied for user」:權限、主機與密碼排查指南

     編輯:程式設計綜合問答

錯誤信息解讀

Access denied for user 'zhanghao'@'localhost' (using password: YES)
  • 用戶:zhanghao
  • 主機:localhost (僅允許本地套接字/127.0.0.1 連接)
  • 使用密碼:YES (已提供密碼但驗證失敗)

排查步驟 (按可能性排序)

  1. 密碼錯誤
    • 確認輸入密碼無空格、大小寫正確。
    • 嘗試命令行驗證:mysql -u zhanghao -p -h 127.0.0.1 (強制 TCP 連接)。
  2. 用戶不存在或主機不匹配
    • MySQL 用戶由 用戶名@主機 唯一標識。'zhanghao'@'localhost' ≠ 'zhanghao'@'%' ≠ 'zhanghao'@'127.0.0.1'。
    • 以 root 登入檢查:SELECT User, Host, authentication_string FROM mysql.user WHERE User='zhanghao';
  3. 密碼插件不匹配 (MySQL 8.0+)
    • 默認插件 caching_sha2_password,舊客端/驅動可能不支持。
    • 修改為 mysql_native_password:
      ALTER USER 'zhanghao'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
      FLUSH PRIVILEGES;
      
  4. SSL/加密連接要求
    • Workbench → Connection → SSL 選項卡 → 勾選 "Use SSL" 或 "Require SSL" 視服務端配置而定。
  5. Workbench 緩存舊密碼
    • 刪除保存的連接配置重新創建,或清理 %APPDATA%\MySQL\Workbench\connections.xml。

root 用戶無法登入怎麼辦?

# 1. 跳過權限表啟動
systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
# 2. 免密登入
mysql -u root
# 3. 修改密碼/創建用戶
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass';
# 或創建新管理員
CREATE USER 'admin'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
# 4. 正常重啟
systemctl restart mysqld

Workbench 連接最佳實踐

  • 主機名用 127.0.0.1 而非 localhost (避免 Unix socket vs TCP 混淆)。
  • 端口確認 3306 (或修改後的端口)。
  • 勾選 "Store in Vault" (Keychain/Windows Credential Manager) 安全保存密碼。
  • 測試連接前先用命令行 mysql -u user -p -h 127.0.0.1 驗證賬號密碼正確。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved