錯誤信息解讀
Access denied for user 'zhanghao'@'localhost' (using password: YES)
- 用戶:
zhanghao
- 主機:
localhost (僅允許本地套接字/127.0.0.1 連接)
- 使用密碼:
YES (已提供密碼但驗證失敗)
排查步驟 (按可能性排序)
- 密碼錯誤
- 確認輸入密碼無空格、大小寫正確。
- 嘗試命令行驗證:
mysql -u zhanghao -p -h 127.0.0.1 (強制 TCP 連接)。
- 用戶不存在或主機不匹配
- MySQL 用戶由
用戶名@主機 唯一標識。'zhanghao'@'localhost' ≠ 'zhanghao'@'%' ≠ 'zhanghao'@'127.0.0.1'。
- 以 root 登入檢查:
SELECT User, Host, authentication_string FROM mysql.user WHERE User='zhanghao';
- 密碼插件不匹配 (MySQL 8.0+)
- SSL/加密連接要求
- Workbench → Connection → SSL 選項卡 → 勾選 "Use SSL" 或 "Require SSL" 視服務端配置而定。
- 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 驗證賬號密碼正確。