Mit den beiden folgenden Klassen habe ich versucht, eine Verbindung zu einer MySQL-Datenbank herzustellen. Ich erhalte jedoch immer den folgenden Fehler:
Wed Dec 09 22:46:52 CET 2015 WARNUNG: Es wird nicht empfohlen, eine SSL-Verbindung ohne Überprüfung der Serveridentität herzustellen. Gemäß den Anforderungen von MySQL 5.5.45+, 5.6.26+ und 5.7.6+ muss standardmäßig eine SSL-Verbindung hergestellt werden, wenn keine explizite Option festgelegt ist. Für die Konformität mit vorhandenen Anwendungen, die kein SSL verwenden, wird die Eigenschaft verifyServerCertificate auf 'false' gesetzt. Sie müssen entweder SSL explizit deaktivieren, indem Sie useSSL = false festlegen, oder useSSL = true festlegen und einen Truststore für die Überprüfung des Serverzertifikats bereitstellen.
Dies ist die Testklasse mit der main
Methode:
public class TestDatabase {
public static void main(String[] args) {
Database db = new Database();
try {
db.connect();
} catch (Exception e) {
e.printStackTrace();
}
db.close();
}
}
Das ist die Database
Klasse:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
private Connection con;
public void connect() throws Exception{
if(con != null) return;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new Exception("No database");
}
String connectionURL = "jdbc:mysql://localhost:3306/Peoples";
con = DriverManager.getConnection(connectionURL, "root", "milos23");
}
public void close(){
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
java
ssl
database-connection
mysql-error-1064
Milos86
quelle
quelle
Antworten:
Ihre Verbindungs-URL sollte wie folgt aussehen:
Dies deaktiviert SSL und unterdrückt auch die SSL-Fehler.
quelle
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
Ich habe & amp; anstelle von &Wie wäre es mit SSL, aber Deaktivieren der Serverüberprüfung (z. B. im Entwicklungsmodus auf Ihrem eigenen Computer):
quelle
Erwähnen Sie
url
Folgendes:Wenn Sie jedoch in der XML-Konfiguration das
&
Zeichen erwähnen , zeigt die IDE den folgenden Fehler an:Und dann müssen Sie explizit das verwenden,
&
anstatt&
wie danach bestimmt zu&
werden. Sie müssen die URL in der XML-Konfiguration wie folgt angeben:xml
xml
quelle
Eine alternative Methode wäre:
quelle
Ich habe diese Warnung auch gefunden und sie dann mithilfe des Suffixes SSL = false für die Verbindungszeichenfolge wie in diesem Beispielcode behoben.
Beispiel:
quelle
Die Standardeinstellungen zum Herstellen einer Verbindung zu einem MySQL-Server wurden in der jüngeren Vergangenheit geändert, und (von einem kurzen Blick auf die beliebtesten Fragen und Antworten zum Stapelüberlauf) sorgen die neuen Werte für große Verwirrung. Was noch schlimmer ist, ist, dass der Standard-Ratschlag darin zu bestehen scheint, SSL insgesamt zu deaktivieren, was eine Katastrophe darstellt.
Wenn Ihre Verbindung wirklich nicht mit dem Netzwerk verbunden ist (nur localhost) oder Sie in einer Nicht-Produktionsumgebung ohne echte Daten arbeiten, können Sie SSL nicht deaktivieren, indem Sie die Option einschließen
useSSL=false
.Für alle anderen sind die folgenden Optionen erforderlich, damit SSL mit der Zertifikat- und Hostüberprüfung funktioniert:
Als zusätzlichen Bonus können Sie auch die schwachen SSL-Protokolle deaktivieren, da Sie bereits mit den Optionen spielen:
Beispiel
Als Arbeitsbeispiel müssen Sie also die folgenden allgemeinen Schritte ausführen:
Stellen Sie zunächst sicher, dass ein gültiges Zertifikat für den MySQL-Server-Host generiert wurde und dass das CA-Zertifikat auf dem Client-Host installiert ist (wenn Sie selbstsigniert verwenden, müssen Sie dies wahrscheinlich manuell tun, jedoch für das beliebte öffentliche Zertifizierungsstellen wird es bereits geben).
Stellen Sie als Nächstes sicher, dass der Java-Keystore alle CA-Zertifikate enthält. Unter Debian / Ubuntu wird dies erreicht, indem Folgendes ausgeführt wird:
Aktualisieren Sie schließlich die Verbindungszeichenfolge, um alle erforderlichen Optionen einzuschließen, die unter Debian / Ubuntu ungefähr so aussehen würden (nach Bedarf anpassen):
Referenz: https://beansandanicechianti.blogspot.com/2019/11/mysql-ssl-configuration.html
quelle
Sie müssen Ihren MySQL-Pfad wie folgt verwenden:
quelle
Das war OK für mich:
quelle
Verwenden Sie diese Option, um das Problem in Hive zu lösen, während Sie eine Verbindung mit MySQL herstellen
quelle
jdbc:mysql://localhost/metastore?useSSL=false&createDatabaseIfNotExist=true
. Ohne das und es funktioniert gut.Ich verwende diese Eigenschaft für den Ruhezustand in config xml
ohne - serverTimezone = UTC - es funktioniert nicht
quelle
Lösung Um dies zu beheben, fügen Sie am Ende der MySQL-Verbindungszeichenfolge ein useSSL = false hinzu:
Ex.
application.properties
MySQL-Datenquelle
quelle
Die neuen Versionen von MySQL-Connector stellen standardmäßig eine SSL-Verbindung her ... um dies zu lösen:
Laden Sie die ältere Version von mysql-connector herunter, z. B. mysql-connector-java-5.0.8.zip
. . oder . . Laden Sie OpenSSL für Windows herunter und befolgen Sie die Anweisungen zum Einstellen
quelle
Da ich mich derzeit im Entwicklungsmodus befinde, setze ich useSSL nicht in Tomcat, sondern in MySQL-Serverkonfigurationen auf Nein. Zugriffseinstellungen verwalten \ Serververbindungen über die Workbench verwalten -> Meine Verbindung ausgewählt. Die Registerkarte "Verbindung" ging zur Registerkarte "SSL" und deaktivierte die Einstellungen. Hat für mich gearbeitet.
quelle