使用 Java 連接 MySQL 時,為什麼會出現「不允許公鑰檢索」錯誤?

DDD
發布: 2024-11-01 17:20:02
原創
609 人瀏覽過

Why am I getting the

MySQL 連線錯誤:「不允許公鑰擷取」

嘗試使用 Java 的 MySQL Connector 8.0 連線到 MySQL 資料庫時。 11、您可能會遇到以下異常:

java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
登入後複製

此錯誤表示客戶端正在嘗試從伺服器檢索公鑰,但連線尚未配置為允許這樣做。

解決方案

要解決此問題,您需要將allowPublicKeyRetrieval=true 用戶端選項新增至連線字串中。這將允許客戶端自動從伺服器請求公鑰。但是,請務必注意,將此選項設為 true 可能會允許惡意代理執行 MITM 攻擊以取得明文密碼。

具有AllowPublicKeyRetrieval 的範例連線管理員

以下程式碼片段更新ConnectionManager 類別中的get 方法以包含allowedPublicKey

<code class="java">public static Connection getConnection() throws SQLException {

    MysqlDataSource dataSource = new MysqlDataSource();

    dataSource.setUseSSL(false);
    dataSource.setServerTimezone(serverTimeZone);
    dataSource.setServerName(serverName);
    dataSource.setDatabaseName(databaseName);
    dataSource.setPortNumber(portNumber);
    dataSource.setUser(user);
    dataSource.setPassword(password);

    dataSource.setAllowPublicKeyRetrieval(true); // Allow public key retrieval

    return dataSource.getConnection();
}</code>
登入後複製

<code class="java">jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false</code>
登入後複製
🎜>附加說明出於測試或開發目的,您可以還可以考慮透過設定useSSL=false 來停用SSL,如提供的解決方案中所建議的:

以上是使用 Java 連接 MySQL 時,為什麼會出現「不允許公鑰檢索」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!