Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum löst meine Java-Anwendung beim Herstellen einer Verbindung mit MySQL die Ausnahme „Das Abrufen öffentlicher Schlüssel ist nicht zulässig' aus?

Susan Sarandon
Freigeben: 2024-11-01 09:08:30
Original
342 Leute haben es durchsucht

Why Does My Java Application Throw a

Verbindung Java - MySQL: Fehlerbehebung bei der Ausnahme „Public Key Retrieval ist nicht zulässig“

Beim Versuch, eine Verbindung zu einer MySQL-Datenbank herzustellen Bei Verwendung des Java-Connectors 8.0.11 kann es bei Entwicklern zu der Ausnahme „Public Key Retrieval ist nicht zulässig“ kommen. Dieser Fehler tritt während des Verbindungs-Handshake-Prozesses auf und bedeutet, dass der Client (Java-Anwendung) nicht berechtigt ist, den öffentlichen Schlüssel zur Authentifizierung vom Server zu erhalten.

Ausnahmeursache

Die Ausnahme tritt auf, wenn die Java-Anwendung versucht, den öffentlichen Schlüssel des Servers abzurufen, der zum Verschlüsseln und Übertragen vertraulicher Informationen wie dem Benutzerkennwort verwendet wird. Standardmäßig verbietet MySQL den Abruf öffentlicher Schlüssel, um potenzielle Man-in-the-Middle-Angriffe (MITM) zu verhindern.

Lösung

Um dieses Problem zu beheben, muss die Java-Anwendung verwendet werden muss explizit konfiguriert werden, um den Abruf des öffentlichen Schlüssels beim Herstellen der Datenbankverbindung zu ermöglichen. Dies kann erreicht werden, indem der Parameter „allowPublicKeyRetrieval=true“ als Teil der JDBC-Verbindungszeichenfolge angegeben wird.

Hier ist ein Beispiel für eine JDBC-Verbindungszeichenfolge, die den Parameter „allowPublicKeyRetrieval“ enthält:

jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true
Nach dem Login kopieren

Beachten Sie Folgendes Das Aktivieren des Abrufens öffentlicher Schlüssel stellt ein potenzielles Sicherheitsrisiko dar, da der Client anfällig für MITM-Angriffe wird, wenn die Verbindung nicht über einen sicheren Kanal (z. B. HTTPS) erfolgt. Zu Entwicklungs- und Testzwecken kann es sicherer sein, SSL zu deaktivieren und explizit useSSL=false in der Verbindungszeichenfolge anzugeben:

jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
Nach dem Login kopieren

Zusätzliche Tipps

Wenn das Problem auftritt trotz der Angabe von „allowPublicKeyRetrieval=true“ bestehen bleibt, versuchen Sie die folgenden zusätzlichen Maßnahmen:

  • Stellen Sie sicher, dass die SSL/TLS-Konfiguration des MySQL-Servers ordnungsgemäß konfiguriert ist.
  • Stellen Sie sicher, dass die Java-Anwendung die neueste Version verwendet Version des MySQL JDBC-Connectors.
  • Deaktivieren Sie die Firewall (vorübergehend), um netzwerkbezogene Blockaden zu beseitigen.
  • Starten Sie den MySQL-Dienst neu, um einen sauberen Verbindungsaufbau sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum löst meine Java-Anwendung beim Herstellen einer Verbindung mit MySQL die Ausnahme „Das Abrufen öffentlicher Schlüssel ist nicht zulässig' aus?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!