Heim > Datenbank > MySQL-Tutorial > 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
Freigeben: 2024-11-01 17:20:02
Original
720 Leute haben es durchsucht

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage