首頁  >  文章  >  資料庫  >  使用 Java 連接 MySQL 時,為什麼會出現「不允許公鑰檢索」錯誤?

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

DDD
DDD原創
2024-11-01 17:20:02610瀏覽

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中文網其他相關文章!

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