java - connecting - Cómo resolver el problema No se puede cargar el complemento de autenticación 'caching_sha2_password'




spring boot jpa (10)

En el eclipse, cuando inicié mi aplicación, obtuve esto: no se pudo descubrir el dialecto que usar. java.sql.SQLException: no se puede cargar el complemento de autenticación 'caching_sha2_password'.

en java.sql.SQLException: no se puede cargar el complemento de autenticación 'caching_sha2_password'. at at com.mysql.jdbc.SQLError.createSQLException (SQLError.java:868) at at com.mysql.jdbc.SQLError.creacreapaccccte.create recreación en el correo electrónico. java: 1746) en com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) en com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2191) en com.mysql.jdbc.ConnImplection. connectOneTryOnly (ConnectionImpl.java:2222) en com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2017) en com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:779) en com.mysql.jdbc.ConnectionImpl. .JDBC4Connection. (JDBC4Connection.java:47) at at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) at at sun.reflect.NativeControl.Pel.pel.pel.pel.pel.pel.pel.pel.pel.pel.pel.pel.pel.pel. at java.lang.reflect.Constructor.newInstance (Fuente desconocida) at com.mysql.jdbc.Util.handleNewInstance (Util.java:425) at a t com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:389) en com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:330) en java.sql.DriverManager.getConnection java.sql.DriverManager.getConnection (Fuente desconocida) en ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection (DriverManagerConnectionSource.java:54) en ch.qos.logback.core.db.ConnectionSourceBase.discoverConp.Propopropropiedad .java: 46) en ch.qos.logback.core.db.DriverManagerConnectionSource.start (DriverManagerConnectionSource.java:38) en ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end (NestedComplexPropertyIA.java.1 ) en ch.qos.logback.core.joran.spi.Interpreter.callEndAction (Interpreter.java:309) en ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:193) en en ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:179) en ch.qos.logback.core.joran.spi.EventPlayer.play (EventPl ayer.java:62) en ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:165) en ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:15) en at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:110) en ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:53) en at ch.qos. logback.classic.util.ContextInitializer.configureByResource (ContextInitializer.java:75) en ch.qos.logback.classic.util.ContextInitializer.autoConfig (ContextInitializer.java.150) en at ph.sys.P.P.P.P.P.P.P. StaticLoggerBinder.java:84) at en org.slf4j.impl.StaticLoggerBinder. (StaticLoggerBinder.java:55) en org.slf4j.LoggerFactory.pañol en las instalaciones de la empresa: LoggerFactory.java:150) en org.slf4j.Logger. .java: 124) at org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.java:412) at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addSta TUS (StatusViaSLF4JLoggerFactory.java:32) en al ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo (StatusViaSLF4JLoggerFactory.java:20) en al ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup (LogbackServletContainerInitializer.java: 32) en org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5245) en org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) en org.apache.catalina. core.ContainerBase $ StartChild.call (ContainerBase.java:1421) en org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1411) en java.util.concurrent.FutureTask.run (Fuente) Desconocido ) en java.util.concurrent.ThreadPoolExecutor.runWorker (Fuente desconocida) en java.util.concurrent.ThreadPoolExecutor $ Worker.run (Fuente desconocida) en java.lang.Thread.run (Fuente desconocida)


A partir de MySQL 8.0.4, cambiaron el complemento de autenticación predeterminado para el servidor MySQL de mysql_native_password a caching_sha2_password .

Puede ejecutar el siguiente comando para resolver el problema.

Ejemplo de nombre de usuario / contraseña => estudiante / pass123

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

Consulte la página oficial para más detalles: Manual de referencia de MySQL


Actualice su paquete lib "mysql-connector" con su versión de mysql como a continuación, estoy usando la versión 8.0.13 y en pom cambié la versión:

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

Mi problema se ha resuelto después de esto.


Creo que es mejor actualizar el paquete lib "mysql-connector", para que la base de datos sea aún más segura.

Estoy usando mysql de la versión 8.0.12. Cuando actualicé mysql-connector-java a la versión 8.0.11, el problema desapareció.


Está teniendo problemas con la nueva versión de MySQL que viene con el complemento "caching_sha2_password", siga el comando a continuación para resolverlo.

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

O simplemente puede usar el siguiente comando para mantener sus privilegios tal como son:

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;

Estoy utilizando mysql 8.0.12 y la actualización del conector mysql a mysql-connector-java-8.0.12 resolvió el problema por mí.

Espero que ayude a alguien.


Hice exactamente el mismo problema usando la dependencia a continuación:

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

Acabo de cambiar a la versión 46 y todo funciona.


Otra causa podría ser el hecho de que estás apuntando al puerto incorrecto.

Asegúrese de que realmente está apuntando al servidor SQL correcto. Es posible que tenga una instalación predeterminada de MySQL en 3306 pero en realidad puede que necesite una instancia de MySQL diferente.

Compruebe los puertos y ejecute alguna consulta en la base de datos.


Puede ser que estés usando mysql_connector incorrecto.

Usar conector de la misma versión mysql.


Solo necesita eliminar su conector anterior y descargar la nueva versión (mysql-connector-java-5.1.46)


elimine el archivo .jar de conexión si agregó el archivo jar de múltiples versiones del conector solo agregue el archivo jar de los conectores que coincida con su versión de SQL.