it-swarm.com.de

Problembehebung Das Problem mit dem Authentifizierungs-Plugin 'caching_sha2_password' konnte nicht geladen werden

Als ich in Eclipse meine Anwendung startete, bekam ich Folgendes - Konnte den zu verwendenden Dialekt nicht erkennen. Java.sql.SQLException: Das Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden.

at Java.sql.SQLException: Das Authentifizierungs-Plugin kann nicht geladen werden 'caching_sha2_password'. um um com.mysql.jdbc.SQLError.createSQLException (SQLError.Java:868) um ​​at com.mysql.jdbc.SQLError.createSQLException (SQLError.Java:864) um at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication (MysqlIO.Java:1746) um um com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.Java:1226) um um com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.Java:2191) um um com.mysql.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.Java:2222) um um com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.Java:2017) at um com.mysql.jdbc.ConnectionImpl (ConnectionImpl.Java:779) at um com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.Java:47) at um Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Methode) um um Sun.reflect.NativeConstructorAccessorImpl.newInstance (unbekannte Quelle) um um Sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Unknown Source) unter Java.lang.reflect.Constructor.newInstance (Unknown Source) um com.mysql.jdbc.Util.handleNewInstance (Util.Java:425). um um com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.Java:389) um beim com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.Java:330) at um Java.sql.DriverManager.getConnection (unbekannte Quelle) um um Java.sql.DriverManager.getConnection (unbekannte Quelle) um um ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection (DriverManagerConnectionSource.Java:54) um um ch.qos.logback.core.db.ConnectionSourceBase.discoverConnectionProperties (ConnectionSourceBase.Java:46) um um ch.qos.logback.core.db.DriverManagerConnectionSource.start (DriverManagerConnectionSource.Java:38) um um ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end (NestedComplexPropertyIA.Java:161) um um ch.qos.logback.core.joran.spi.Interpreter.callEndAction (Interpreter.Java:309) um um ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.Java:193) um um ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.Java:179) um um ch.qos.logback.core.joran.spi.EventPlayer.play (EventPlayer.Java:62) um um ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:165) um um ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:152) um um ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java: 110) um um ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:53) um um ch.qos.logback.classic.util.ContextInitializer.configureByResource (ContextInitializer.Java:75) um um ch.qos.logback.classic.util.ContextInitializer.autoConfig (ContextInitializer.Java:150) um um org.slf4j.impl.StaticLoggerBinder.init (StaticLoggerBinder.Java:84) um beim org.slf4j.impl.StaticLoggerBinder (StaticLoggerBinder.Java:55) at um org.slf4j.LoggerFactory.bind (LoggerFactory.Java: 150) um um org.slf4j.LoggerFactory.performInitialization (LoggerFactory.Java:124) um um org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.Java:412) um beim ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus (StatusViaSLF4JLoggerFactory.Java:32) um um ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo (StatusViaSLF4JLoggerFactory.Java:20) um um ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup (LogbackServletContainerInitializer.Java:32) um um org.Apache.catalina.core.StandardContext.startInternal (StandardContext.Java:5245) um um org.Apache.catalina.util.LifecycleBase.start (LifecycleBase.Java: 150) um um org.Apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.Java:1421) um um org.Apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.Java:1411) at um Java.util.concurrent.FutureTask.run (unbekannte Quelle) um um Java.util.concurrent.ThreadPoolExecutor.runWorker (unbekannte Quelle) um at Java.util.concurrent.ThreadPoolExecutor $ Worker.run (unbekannte Quelle) at at Java.lang.Thread.run (unbekannte Quelle)

37
Sarath Mohan

Beginnend mit MySQL 8.0.4 haben sie die Standardeinstellung .__ geändert. Authentifizierungs-Plugin für MySQL-Server von mysql_native_password bis caching_sha2_password.

Sie können den folgenden Befehl ausführen, um das Problem zu beheben.

beispiel Benutzername/Passwort => Student/Pass123

ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

Weitere Informationen finden Sie auf der offiziellen Seite: MySQL-Referenzhandbuch

67
Gaurav

Möglicherweise verwenden Sie den falschen mysql_connector.

Verwenden Sie einen Connector der gleichen MySQL-Version

12

Ich habe diesen Fehler in einer Spring Boot-App gefunden, aber nicht in einer anderen. Schließlich fand ich, dass die Spring Boot-Version 2.0.0.RELEASE nicht funktionierte und 2.0.1.RELEASE funktionierte. Dies führte zu einem Unterschied im MySQL Connector - 5.1.45 gegenüber 5.1.46. Ich habe die Spring Boot-Version für die App aktualisiert, die diesen Fehler beim Start ausgelöst hat, und jetzt funktioniert sie.

8
Greg Charles

Sie müssen nur Ihren älteren Connector löschen und eine neue Version herunterladen (mysql-connector-Java-5.1.46).

5
Turab

Ich verwende Mysql 8.0.12 und aktualisiere den Mysql-Connector auf Mysql-Connector-Java-8.0.12. Das Problem wurde für mich behoben.

Ich hoffe es hilft jemandem.

3

Bei NetBeans bin ich auf dieses Problem gestoßen, als ich mit einem vorgefertigten Projekt aus diesem Murach-JSP-Buch arbeitete. Das Problem wurde durch die Verwendung des 5.1.23 Connector J mit einer MySQL 8.0.13-Datenbank verursacht. Ich musste den alten Treiber durch einen neuen ersetzen. Nach dem Herunterladen des Connectors J wurden drei Schritte ausgeführt.

So ersetzen Sie den NetBeans-Projekt-Connector J:

  1. Laden Sie den aktuellen Connector J von hier herunter. Dann kopieren Sie es in Ihr Betriebssystem.

  2. Klicken Sie in NetBeans auf die Registerkarte Dateien, die sich neben der Registerkarte Projekte befindet. Suchen Sie nach dem mysql-connector-Java-5.1.23.jar oder dem alten Connector, den Sie haben. Löschen Sie diesen alten Connector. Fügen Sie den neuen Connector ein.

  3. Klicken Sie auf die Registerkarte Projekte. Navigieren Sie zum Ordner Bibliotheken. Löschen Sie den alten MySQL-Connector. Klicken Sie mit der rechten Maustaste auf den Ordner Bibliotheken. Wählen Sie Jar/Ordner hinzufügen. Navigieren Sie zu dem Ort, an dem Sie den neuen Connector platzieren, und wählen Sie "Öffnen" aus.

  4. Klicken Sie auf der Registerkarte Projekt mit der rechten Maustaste auf das Projekt. Wählen Sie unten im Popup-Menü die Option "Datenquellen auflösen". Klicken Sie auf Verbindung hinzufügen. An diesem Punkt springt NetBeans vorwärts und geht davon aus, dass Sie den alten Connector verwenden möchten. Klicken Sie auf die Schaltfläche Zurück, um zum übersprungenen Fenster zurückzukehren. Entfernen Sie den alten Stecker und fügen Sie den neuen Stecker hinzu. Klicken Sie auf Weiter und Testverbindung, um sicherzustellen, dass es funktioniert.

Für die Videoreferenz fand ich this nützlich. Für IntelliJ IDEA fand ich this nützlich.

2
Jack J

Sie haben ein Problem mit der neuen MySQL-Version, die mit dem Plug-In "caching_sha2_password" geliefert wurde.

DROP USER 'your_user_name'@'%';
CREATE USER 'your_user_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_user_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user_name'@'%' identified by 'your_user_password';

Oder Sie können einfach den untenstehenden Befehl verwenden, um Ihre Privilegien beizubehalten:

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
2
user8406805

Wie in den obigen Repilien erwähnt:

Ab MySQL 8.0.4 hat das MySQL-Team das Standard-Authentifizierungs-Plugin für MySQL-Server von mysql_native_password in caching_sha2_password geändert.

Es gibt also drei Möglichkeiten, dieses Problem zu lösen:

 1. drop USER 'user_name'@'localhost';
    flush privileges;
    CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_name';
    GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost';
    ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 
    'user_name';

 2. drop USER 'user_name'@'localhost';
    flush privileges;
    CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'user_name';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost'

 3. If the user is already created, the use the following command:

    ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 
        'user_name';
2
DC-

Ich denke, es ist besser, Ihr lib-Paket "mysql-connector" zu aktualisieren, damit die Datenbank noch sicherer ist.

Ich verwende MySQL von Version 8.0.12. Als ich den mysql-connector-Java auf Version 8.0.11 aktualisiert habe, war das Problem nicht mehr vorhanden.

1
Jack Ma

Ich habe genau das gleiche Problem mit der folgenden Abhängigkeit gemacht:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>5.1.44</version>
</dependency>

Ich ändere gerade auf Version 46 und alles funktioniert.

1
José Junior

Wenn Sie Ihren Connector auf eine Version aktualisieren können, die das neue Authentifizierungs-Plugin von MySQL 8 unterstützt, tun Sie dies. Wenn dies aus irgendeinem Grund keine Option ist, ändern Sie die Standardauthentifizierungsmethode Ihres Datenbankbenutzers in Native.

1
DataVader

Dies könnten Ihre Konnektoren für MySQL sein, die aktualisiert werden müssen, da MySQL8 die Verschlüsselung von Passwörtern geändert hat - so dass ältere Konnektoren sie falsch verschlüsseln.

Den Maven-Repo für den Java Connector finden Sie hier .
Wenn Sie das Flyway-Plugin verwenden, sollten Sie auch auch aktualisieren !

Dann können Sie einfach Ihr maven pom aktualisieren mit:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>8.0.17</version>
</dependency>

Oder für andere, die Gradle verwenden, können Sie build.gradle aktualisieren mit:

 buildscript {
    ext {
        ...
    }
    repositories {
        ...
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath('mysql:mysql-connector-Java:8.0.11')
    }
 }

All that you really need to do (build.gradle example)

1
KeaganFouche

Eine andere Ursache könnte die Tatsache sein, dass Sie auf den falschen Port zeigen.

Stellen Sie sicher, dass Sie tatsächlich auf den richtigen SQL-Server zeigen. Sie haben möglicherweise eine Standardinstallation von MySQL unter 3306, benötigen jedoch tatsächlich eine andere MySQL-Instanz.

Überprüfen Sie die Ports und führen Sie eine Abfrage gegen die Datenbank aus.

0
Aquazi

Aktualisieren Sie Ihr Paket "mysql-connector" lib mit Ihrer mysql-Version. Ich verwende die Version 8.0.13 und in pom habe ich die Version geändert:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <scope>runtime</scope>
    <version>8.0.13</version>
</dependency>

Mein Problem hat sich danach gelöst.

0
alok

entfernen Sie die Connect-JAR-Datei, wenn Sie die Connector-JAR-Datei mit mehreren Versionen hinzugefügt haben. Fügen Sie nur die Connector-JAR-Datei hinzu, die Ihrer SQL-Version entspricht.

0
user10434384