java - conexion - spring boot jdbc
Cómo resolver el problema No se puede cargar el complemento de autenticación ''caching_sha2_password'' (14)
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
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)
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.
Como se mencionó en los reptiles anteriores:
Comenzando con MySQL 8.0.4, el equipo de MySQL cambió el complemento de autenticación predeterminado para el servidor MySQL de mysql_native_password a caching_sha2_password.
Así que hay tres formas de resolver este problema:
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'';
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;
Estaba cometiendo este error en una aplicación Spring Boot, pero no en otra. Finalmente, encontré que la versión Spring Boot en la que no funcionaba era 2.0.0.RELEASE y la que estaba funcionando era 2.0.1.RELEASE. Eso llevó a una diferencia en el MySQL Connector - 5.1.45 vs. 5.1.46. Actualicé la versión Spring Boot para la aplicación que estaba lanzando este error al inicio y ahora funciona.
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.
Me encontré con este problema en NetBeans al trabajar con un proyecto ya preparado de este libro de Murach JSP . El problema se debió al usar el conector J 5.1.23 con una base de datos MySQL 8.0.13. Necesitaba reemplazar el viejo controlador por uno nuevo. Después de descargar el Connector J, esto tomó tres pasos.
Cómo reemplazar el conector J del proyecto NetBeans:
-
Descargue el conector actual J desde here . Luego cópialo en tu sistema operativo.
-
En NetBeans, haga clic en la pestaña Archivos que se encuentra junto a la pestaña Proyectos. Encuentre el mysql-connector-java-5.1.23.jar o cualquier conector antiguo que tenga. Eliminar este conector antiguo. Pegar en el nuevo conector.
-
Haga clic en la pestaña Proyectos. Vaya a la carpeta Bibliotecas. Eliminar el conector mysql antiguo. Haga clic derecho en la carpeta Bibliotecas. Seleccione Agregar archivo / carpeta. Desplácese hasta la ubicación donde coloca el nuevo conector y seleccione Abrir.
-
En la pestaña Proyecto, haga clic derecho en el proyecto. Seleccione Resolver fuentes de datos en la parte inferior del menú emergente. Haga clic en Agregar conexión. En este punto, NetBeans salta hacia adelante y asume que desea utilizar el conector antiguo. Haga clic en el botón Atrás para volver a la ventana omitida. Retire el conector antiguo y agregue el nuevo conector. Haga clic en Siguiente y Probar conexión para asegurarse de que funciona.
Para referencia de video, encontré que this es útil. Para IntelliJ IDEA, encontré que this es útil.
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.
Si puede actualizar su conector a una versión que sea compatible con el nuevo complemento de autenticación de MySQL 8, hágalo. Si esa no es una opción por algún motivo, cambie el método de autenticación predeterminado de su usuario de base de datos a nativo.
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.