web-dev-qa-db-fra.com

Comment résoudre un problème lié au plugin d'authentification 'caching_sha2_password'

Dans Eclipse quand j'ai commencé mon application, j'ai eu ceci - Impossible de découvrir le dialecte à utiliser. Java.sql.SQLException: Impossible de charger le plug-in d'authentification 'caching_sha2_password'.

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

37
Sarath Mohan

Depuis MySQL 8.0.4, ils ont changé la valeur par défaut plugin d'authentification pour le serveur MySQL de mysql_native_password à caching_sha2_password.

Vous pouvez exécuter la commande ci-dessous pour résoudre le problème.

exemple de nom d'utilisateur/mot de passe => student/pass123

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

Reportez-vous à la page officielle pour plus de détails: Manuel de référence MySQL

67
Gaurav

Peut-être que vous utilisez un mauvais mysql_connector.

Utiliser un connecteur de la même version de MySQL

12

Je rencontrais cette erreur dans une application Spring Boot, mais pas dans une autre. Enfin, j'ai trouvé que la version Spring Boot dans celle qui ne fonctionnait pas était 2.0.0.RELEASE et celle qui fonctionnait était 2.0.1.RELEASE. Cela a conduit à une différence entre le connecteur MySQL - 5.1.45 et 5.1.46. J'ai mis à jour la version Spring Boot de l'application qui lançait cette erreur au démarrage et cela fonctionne maintenant.

8
Greg Charles

Vous devez simplement supprimer votre ancien connecteur et télécharger la nouvelle version (mysql-connector-Java-5.1.46)

5
Turab

J'utilise mysql 8.0.12 et la mise à jour du connecteur mysql vers mysql-connector-Java-8.0.12 a résolu le problème pour moi.

J'espère que ça aide quelqu'un.

3
Santosh Gatlewar

J'ai rencontré ce problème sur NetBeans lorsque je travaillais avec un projet prêt à l'emploi de ce livre Murach JSP . Le problème était dû à l’utilisation du connecteur 5.1.23 J avec une base de données MySQL 8.0.13. Je devais remplacer l'ancien pilote par un nouveau. Après avoir téléchargé le connecteur J, cela a pris trois étapes.

Comment remplacer le projet NetBeans Connector J:

  1. Téléchargez le connecteur J actuel à partir de ici . Puis copiez-le dans votre système d'exploitation.

  2. Dans NetBeans, cliquez sur l'onglet Fichiers qui se trouve à côté de l'onglet Projets. Trouvez le mysql-connector-Java-5.1.23.jar ou votre ancien connecteur. Supprimer cet ancien connecteur. Coller dans le nouveau connecteur.

  3. Cliquez sur l'onglet Projets. Accédez au dossier Bibliothèques. Supprimez l'ancien connecteur mysql. Faites un clic droit sur le dossier Bibliothèques. Sélectionnez Ajouter un fichier/un dossier. Accédez à l'emplacement où vous avez placé le nouveau connecteur et sélectionnez Ouvrir.

  4. Dans l'onglet Projet, cliquez avec le bouton droit sur le projet. Sélectionnez Résoudre les sources de données au bas du menu contextuel. Cliquez sur Ajouter une connexion. À ce stade, NetBeans avance et suppose que vous souhaitez utiliser l'ancien connecteur. Cliquez sur le bouton Précédent pour revenir à la fenêtre ignorée. Retirez l'ancien connecteur et ajoutez le nouveau connecteur. Cliquez sur Suivant et testez la connexion pour vous assurer que cela fonctionne.

Pour la référence vidéo, j'ai trouvé utile this . Pour IntelliJ IDEA, j’ai trouvé que this était utile.

2
Jack J

Vous rencontrez des problèmes avec la nouvelle version de MySQL fournie avec le plug-in "caching_sha2_password", suivez la commande ci-dessous pour le résoudre.

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

Ou vous pouvez simplement utiliser la commande ci-dessous pour conserver vos privilèges tels quels:

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
2
user8406805

Comme mentionné dans les repilies ci-dessus:

À partir de MySQL 8.0.4, l’équipe MySQL a remplacé le plug-in d’authentification par défaut du serveur MySQL de mysql_native_password par caching_sha2_password.

Donc, il y a trois façons de résoudre ce problème:

 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-

Je pense qu'il est préférable de mettre à jour votre paquet lib "mysql-connector", afin que la base de données soit encore plus sûre.

J'utilise mysql de la version 8.0.12. Lorsque j'ai mis à jour mysql-connector-Java vers la version 8.0.11, le problème avait disparu.

1
Jack Ma

Si vous pouvez mettre à jour votre connecteur vers une version prenant en charge le nouveau plug-in d'authentification de MySQL 8, faites-le. Si ce n'est pas une option pour une raison quelconque, changez la méthode d'authentification par défaut de votre utilisateur de base de données en native.

1
DataVader

Une autre cause pourrait être le fait que vous pointez sur le mauvais port.

Assurez-vous de bien pointer vers le bon serveur SQL. Une installation par défaut de MySQL peut s’exécuter sur 3306, mais vous avez peut-être besoin d’une autre instance de MySQL.

Vérifiez les ports et lancez une requête sur la base de données.

0
Aquazi

Mettez à jour votre paquet "lib" mysql-connector avec votre version de mysql comme ci-dessous. J'utilise la version 8.0.13 et dans pom j'ai changé la version:

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

Mon problème a résolu après cela.

0
alok

supprimez le fichier .jar de connexion si vous avez ajouté le fichier JAR du connecteur à versions multiples, ajoutez uniquement le fichier JAR du connecteur correspondant à votre version SQL.

0
user10434384