Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich die Fehlermeldung „Das Abrufen des öffentlichen Schlüssels ist nicht zulässig“, wenn ich mit Java eine Verbindung zu MySQL herstelle?

Warum erhalte ich die Fehlermeldung „Das Abrufen des öffentlichen Schlüssels ist nicht zulässig“, wenn ich mit Java eine Verbindung zu MySQL herstelle?

DDD
DDDOriginal
2024-11-01 17:20:02610Durchsuche

Why am I getting the

MySQL-Verbindungsfehler: „Abruf des öffentlichen Schlüssels ist nicht zulässig“

Beim Versuch, mit Javas MySQL Connector 8.0 eine Verbindung zu einer MySQL-Datenbank herzustellen. 11 kann die folgende Ausnahme auftreten:

java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

Dieser Fehler weist darauf hin, dass der Client versucht, Daten abzurufen den öffentlichen Schlüssel vom Server, aber die Verbindung wurde nicht so konfiguriert, dass dies zulässig ist.

Lösung

Um das Problem zu beheben, müssen Sie „allowPublicKeyRetrieval=true“ hinzufügen Client-Option zu Ihrer Verbindungszeichenfolge hinzufügen. Dadurch kann der Client automatisch den öffentlichen Schlüssel vom Server anfordern. Es ist jedoch wichtig zu beachten, dass das Festlegen dieser Option auf „true“ einem böswilligen Proxy ermöglichen könnte, einen MITM-Angriff durchzuführen, um an das Klartextkennwort zu gelangen.

Beispiel für einen Verbindungsmanager mit AllowPublicKeyRetrieval

Der folgende Codeausschnitt aktualisiert die getConnection-Methode in Ihrer ConnectionManager-Klasse, um den AllowPublicKeyRetrieval einzuschließen Option:

<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>

Zusätzlicher Hinweis

Zu Test- oder Entwicklungszwecken können Sie auch erwägen, SSL zu deaktivieren, indem Sie useSSL=false festlegen, wie in der bereitgestellten Lösung vorgeschlagen:

<code class="java">jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false</code>

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Das Abrufen des öffentlichen Schlüssels ist nicht zulässig“, wenn ich mit Java eine Verbindung zu MySQL herstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn