Comment résoudre L'impossibilité de charger le plugin d'authentification 'cache le mot de passe sha2' problème
dans eclipse quand j'ai commencé mon application j'ai reçu ceci - ne pouvait pas découvrir le dialecte à utiliser. Java.SQL.SQLException: impossible de charger le plugin d'authentification "caching_sha2_password".
at java.SQL.SQLException: impossible de charger le plugin d'authentification "caching_sha2_password". au COM.mysql.jdbc.La fonction SQLError.createSQLException (SQLError.java:868) au COM.mysql.jdbc.La fonction SQLError.createSQLException (SQLError.java:864) au COM.mysql.jdbc.MysqlIO.procedhandshakewithpluggableauthentication (MysqlIO.java: 1746) au com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) au COM.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java: 2191) au COM.mysql.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java: 2222) au COM.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java: 2017) au com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java: 779) au COM.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java: 47) au au soleil.refléter.NativeConstructorAccessorImpl.newInstance0(Native La méthode) au soleil.refléter.NativeConstructorAccessorImpl.newInstance(Source Inconnue) au soleil.refléter.DelegatingConstructorAccessorImpl.newInstance(Inconnu Source) at at at java.lang.refléter.Constructeur.newInstance(Inconnu Source) at com.mysql.jdbc.Util.handleNewInstance (Util.java: 425) au COM.mysql.jdbc.ConnectionImpl.gettinstance (ConnectionImpl.java:389) à COM.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java: 330) at java.SQL.DriverManager.getConnection (Source inconnue) à at Java.SQL.DriverManager.getConnection (Source inconnue) à at ch.la qualité de service.logback.core.DB.Drivermanagerconnectionssource.getConnection (Drivermanagerconnectionssource.java: 54) au ch.la qualité de service.logback.core.DB.ConnectionSourceBase.discoverConnectionProperties(ConnectionSourceBase.java: 46) au ch.la qualité de service.logback.core.DB.Drivermanagerconnectionssource.start (Drivermanagerconnectionssource.java: 38) au ch.la qualité de service.logback.core.joran.action.Nestedecomplexpropertyia.fin (NestedComplexPropertyIA.java: 161) au ch.la qualité de service.logback.core.joran.le spi.Interprète.callEndAction (interprète.java: 309) au ch.la qualité de service.logback.core.joran.le spi.Interprète.endElement (interprète.java: 193) au ch.la qualité de service.logback.core.joran.le spi.Interprète.endElement (interprète.java: 179) au ch.la qualité de service.logback.core.joran.le spi.EventPlayer.play (EventPlayer.java: 62) au ch.la qualité de service.logback.core.joran.Généricconfigurator.doConfigure(GenericConfigurator.java: 165) au ch.la qualité de service.logback.core.joran.Généricconfigurator.doConfigure(GenericConfigurator.java: 152) au ch.la qualité de service.logback.core.joran.Généricconfigurator.doConfigure(GenericConfigurator.java: 110) au ch.la qualité de service.logback.core.joran.Généricconfigurator.doConfigure(GenericConfigurator.java: 53) au ch.la qualité de service.logback.classique.util.Contextinitialiseur.configureByResource (ContextInitializer.java: 75) au ch.la qualité de service.logback.classique.util.Contextinitialiseur.autoConfig(ContextInitializer.java: 150) au org.slf4j.impl.StaticLoggerBinder.init (StaticLoggerBinder.java: 84) à à org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java: 55) au org.slf4j.LoggerFactory.bind (LoggerFactory.java:150) au org.slf4j.LoggerFactory.performInitialization (LoggerFactory.java: 124) au org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.java:412) à à ch.la qualité de service.logback.classique.util.StatusViaSLF4JLoggerFactory.addStatus (StatusViaSLF4JLoggerFactory.java: 32) au ch.la qualité de service.logback.classique.util.StatusViaSLF4JLoggerFactory.addInfo (StatusViaSLF4JLoggerFactory.java: 20) au ch.la qualité de service.logback.classique.servlet.Logbackservletcontainerinitialiseur.onStartup (LogbackServletContainerInitializer.java: 32) au org.Apache.Catalina.core.StandardContext.startInternal(StandardContext.java: 5245) au org.Apache.Catalina.util.LifecycleBase.start (LifecycleBase.java: 150) au org.Apache.Catalina.core.ContainerBase $ StartChild.appel (ContainerBase.java: 1421) au org.Apache.Catalina.core.ContainerBase $ StartChild.appel (ContainerBase.java: 1411) at java.util.simultané.FutureTask.exécuter (Source inconnue) à at Java.util.simultané.ThreadPoolExecutor.runWorker (Source inconnue) à à java.util.simultané.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Fil.run (Unknown Source)
9 réponses
à partir de MySQL 8.0.4, ils ont changé le plugin d'authentification par défaut pour MySQL server de mysql_native_password en 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 --> étudiant / pass123
ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';
Consulter la page officielle pour plus de détails: Manuel De Référence MySQL
peut être que vous utilisez le mauvais mysql_connector.
utiliser le connecteur de la même version mysql
je tapais cette erreur dans une application de démarrage à ressort, mais pas dans une autre. Enfin, j'ai trouvé que la version de démarrage à ressort dans celle qui ne fonctionnait pas était 2.0.0.Et celui qui fonctionnait était 2.0.1.PUBLIER. Cela a conduit à une différence dans le connecteur MySQL -- 5.1.45 vs. 5.1.46. J'ai mis à jour la version de démarrage de printemps pour l'application qui lançait cette erreur au démarrage et maintenant cela fonctionne.
vous avez des problèmes avec la nouvelle version de MySQL qui est venue avec le plugin "caching_sha2_password", suivez la commande ci-dessous pour la 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 garder vos privilèges que c'est:
ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
vous avez juste besoin de supprimer votre ancien connecteur et télécharger la nouvelle version (mysql-connector-java-5.1.46)
si vous pouvez mettre à jour votre connecteur vers une version, qui supporte le nouveau plugin D'authentification de MySQL 8, alors 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.
je pense qu'il est préférable de mettre à jour votre paquet "mysql-connector" lib, pour que la base de données soit encore plus sûre.
j'utilise mysql de la version 8.0.12. Quand j'ai mis à jour le mysql-connector-java vers la version 8.0.11, le problème était parti.
supprimer la connexion .fichier jar si vous avez ajouté plusieurs version connecteur fichier jar seulement ajouter le connecteur fichier jar qui correspond à votre version sql.
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.