連接Java - MySQL:排除「不允許公鑰檢索」異常
嘗試建立與MySQL 資料庫的連線時使用Java 連接器8.0.11,開發人員可能會遇到「不允許公鑰檢索」異常。此錯誤發生在連線握手過程中,表示客戶端(Java 應用程式)無權從伺服器取得公鑰進行身份驗證。
異常原因
當 Java 應用程式嘗試檢索伺服器的公鑰時,會發生異常,該公鑰用於加密和傳輸使用者密碼等敏感資訊。預設情況下,MySQL 不允許檢索公鑰,以防止潛在的中間人 (MITM) 攻擊。
解決方案
要解決此問題,Java 應用程式必須明確配置為在建立資料庫連線時允許檢索公鑰。這可以透過將 allowedPublicKeyRetrieval=true 參數指定為 JDBC 連接字串的一部分來實現。
以下是包含allowedPublicKeyRetrieval 參數的JDBC 連線字串範例:
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true
請注意如果連線不是透過安全通道進行的,則啟用公鑰擷取會使客戶端容易受到MITM攻擊,從而帶來潛在的安全風險(例如,HTTPS)。出於開發和測試目的,禁用SSL 並在連接字串中明確指定useSSL=false 可能更安全:
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
其他提示
如果問題儘管指定了allowPublicKeyRetrieval=true,但仍然存在,請嘗試以下附加措施:
以上是為什麼我的 Java 應用程式在連接到 MySQL 時拋出'不允許公鑰檢索”異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!