En eclipse, cuando comencé mi aplicación, obtuve esto: no pude descubrir el dialecto a 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 en com.mysql.jdbc.SQLError.createSQLException (SQLError.java:868) en com.mysql.jdbc.SQLError.createSQLException (SQLError.java:864) en com.mysql.jdbc.WceysedHluands. java: 1746) en com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) en com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2191) en com.mysql.jdbc.ConnectionImpl. 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 .JDBC4Connection. (JDBC4Connection.java:47) en sun.reflect.NativeConstructorAccessorImpl.
Otros han señalado el problema de la raíz, pero en mi caso estaba usando dbeaver e inicialmente cuando configuré la conexión mysql con dbeaver estaba seleccionando el controlador mysql incorrecto (crédito aquí para la respuesta: https://github.com/dbeaver/dbeaver/ issues / 4691 # issuecomment-442173584 )
Al seleccionar la opción MySQL en la siguiente figura, se producirá el error mencionado, ya que el controlador es mysql 4+, que se puede ver en la sugerencia de información de la base de datos.
En lugar de seleccionar el controlador MySQL, seleccione el controlador MySQL 8+, que se muestra en la siguiente figura.
fuente
Public key retrieval is not allowed
Actualice su paquete lib mysql-connector "con su versión 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.
fuente
Puede que esté utilizando un mysql_connector incorrecto.
Utilice el conector de la misma versión de mysql
fuente
Recibí este error en una aplicación Spring Boot, pero no en otra. Finalmente, encontré que la versión de 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 conector MySQL: 5.1.45 frente a 5.1.46. Actualicé la versión de Spring Boot para la aplicación que arrojaba este error al inicio y ahora funciona.
fuente
Solo necesita eliminar su conector anterior y descargar la nueva versión (mysql-connector-java-5.1.46)
fuente
Estoy usando 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.
fuente
Como se mencionó en repilies anteriores:
A partir de 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.
Entonces, 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';
fuente
Estos podrían ser sus conectores para MySQL que deben actualizarse, ya que MySQL8 cambió el cifrado de las contraseñas, por lo que los conectores más antiguos las cifran incorrectamente.
El repositorio de maven para el conector java se puede encontrar aquí .
Si usa el complemento Flyway , ¡también debería considerar actualizarlo !
Entonces simplemente puede actualizar su maven pom con:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>
O para otros que usan Gradle , puede actualizar build.gradle con:
buildscript { ext { ... } repositories { ... mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath('mysql:mysql-connector-java:8.0.11') } }
fuente
Tiene problemas con la nueva versión de MySQL que venía con el complemento "caching_sha2_password", siga el siguiente comando 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 como están:
ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
fuente
Me encontré con este problema en NetBeans cuando trabajaba con un proyecto ya hecho de este libro JSP de Murach . El problema fue causado por el uso del conector 5.1.23 J con una base de datos MySQL 8.0.13. Necesitaba reemplazar el controlador antiguo por uno nuevo. Después de descargar el Conector J, esto tomó tres pasos.
Cómo reemplazar el conector J del proyecto NetBeans:
Descargue el Conector J actual desde aquí . Luego cópielo en su sistema operativo.
En NetBeans, haga clic en la pestaña Archivos que está al lado de la pestaña Proyectos. Busque mysql-connector-java-5.1.23.jar o cualquier conector antiguo que tenga. Elimina este conector antiguo. Pegue el nuevo conector.
Haga clic en la pestaña Proyectos. Navegue hasta la carpeta Bibliotecas. Elimina el antiguo conector mysql. Haga clic derecho en la carpeta Bibliotecas. Seleccione Agregar tarro / carpeta. Navegue hasta la ubicación donde colocó el nuevo conector y seleccione abrir.
En la pestaña Proyecto, haga clic con el botón 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 avanza y asume que desea utilizar el conector antiguo. Haga clic en el botón Atrás para volver a la ventana omitida. Quite el conector antiguo y agregue el conector nuevo. Haga clic en Siguiente y Probar conexión para asegurarse de que funcione.
Para referencia de video, encontré que esto es útil. Para IntelliJ IDEA, encontré que esto es útil.
fuente
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.
fuente
Creo que es mejor actualizar su 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ó.
fuente
Si puede actualizar su conector a una versión que admita el nuevo complemento de autenticación de MySQL 8, hágalo. Si esa no es una opción por alguna razón, cambie el método de autenticación predeterminado de su usuario de base de datos a nativo.
fuente
elimine el archivo .jar de conexión si agregó el archivo jar del conector de varias versiones, solo agregue el archivo jar del conector que coincida con su versión de SQL.
fuente
Otra causa podría ser el hecho de que está apuntando al puerto incorrecto.
Asegúrese de estar apuntando al servidor SQL correcto. Es posible que tenga una instalación predeterminada de MySQL ejecutándose en 3306, pero es posible que en realidad necesite una instancia de MySQL diferente.
Verifique los puertos y ejecute alguna consulta en la base de datos.
fuente