Communication failure during handshake. Is there a server running on localhost:3306?
MySQL 服務正常運行、埠 3306 監聽中,但連線失敗。
| 項目 | 版本 | ||
|---|---|---|---|
| MySQL Server | 5.0.18 | ||
| 舊驅動 | mm.mysql-2.0.4-bin.jar (org.gjt.mm.mysql.Driver) | ||
| 新驅動 | mysql-connector-java-5.0.8-bin.jar (com.mysql.jdbc.Driver) |
| 驅動封裝 | 套件名稱 | 適用 MySQL | 狀態 |
|---|---|---|---|
| mm.mysql | org.gjt.mm.mysql.Driver | ≤ 4.0 | 停止維護 |
| Connector/J 3.x/5.x | com.mysql.jdbc.Driver | 4.1 - 5.7 | 維護模式 |
| Connector/J 8.x | com.mysql.cj.jdbc.Driver | 8.0+ | 最新穩定 |
Communications link failure:防火牆阻擋、bind-address 非 0.0.0.0、SSL 強制但客戶端未配置Public Key Retrieval is not allowed:MySQL 8 預設 caching_sha2_password,需加 allowPublicKeyRetrieval=true 或改用 mysql_native_passwordServer timezone value '...' is unrecognized:加 serverTimezone=Asia/Taipei 或 MySQL 設定 default_time_zoneCHARSET=utf8mb4、連線字串 characterEncoding=utf8JDBC 連線失敗 80% 是驅動版本與伺服器版本不匹配。牢記:MySQL 版本升級,驅動必須同步升級。使用 Maven/Gradle 管理依賴,鎖定穩定版本,避免手動複製 jar 導致版本漂移。