首頁 >資料庫 >mysql教程 >為什麼我的 Java 應用程式在連接到 MySQL 時拋出'不允許公鑰檢索”異常?

為什麼我的 Java 應用程式在連接到 MySQL 時拋出'不允許公鑰檢索”異常?

Susan Sarandon
Susan Sarandon原創
2024-11-01 09:08:30452瀏覽

Why Does My Java Application Throw a

連接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,但仍然存在,請嘗試以下附加措施:

  • 確保MySQL 伺服器的SSL/TLS 配置是否正確配置。
  • 驗證 Java 應用程式是否使用最新版本的 MySQL JDBC 連接器。
  • (暫時)停用防火牆以消除任何網路-相關阻塞。
  • 重新啟動 MySQL 服務以確保建立乾淨的連線。

以上是為什麼我的 Java 應用程式在連接到 MySQL 時拋出'不允許公鑰檢索”異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn