web-dev-qa-db-fra.com

MySQLNonTransientConnectionException: Le client ne prend pas en charge le protocole d'authentification demandé par le serveur; envisager de mettre à niveau le client MySQL

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.base/Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:406)
    at com.mysql.jdbc.Util.getInstance(Util.Java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.Java:984)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.Java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:3490)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:919)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.Java:3996)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.Java:1284)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.Java:2137)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.Java:776)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.Java:46)
    at Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.base/Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.Java:352)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:284)
    at Java.sql/Java.sql.DriverManager.getConnection(Unknown Source)
    at Java.sql/Java.sql.DriverManager.getConnection(Unknown Source)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.Java:154)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.Java:145)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.Java:205)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.Java:169)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.Java:122)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.Java:180)
    at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.Java:43)

Je reçois cette erreur même après la mise à jour du mot de passe mysql. J'ai lu dans certains articles que mysql a un nouveau mécanisme de mise en cache et que tous les clients doivent exécuter les tâches suivantes, ce que j'ai déjà fait, mais toujours la même erreur:

 update user set authentication_string='test' where user='root';
 flush privileges   
8
sirajnadwar

Étape 1: Vérifiez la version de votre Mysql actuel à l’aide de: SELECT version(); requête.

étape 2: Vérifiez la version du pilote Mysql jdbc ou de la dépendance à Mysql dans votre navigateur.

étape 3: Mettez à niveau la version de jar ou la version de dépendance maven pour Mysql.

7
suraz

ce problème peut être corrigé en utilisant les étapes ci-dessous: -

étape 1: - lancez la requête ci-dessous dans mysql et redémarrez-la (pour la version> 8.0, le nom d'utilisateur est root ici)

ALTER USER 'root' @ 'localhost' IDENTIFIÉ AVEC mysql_native_password BY 'yourpassword';

étape 2: - vérifiez la version de votre mysql en lançant select version (); en mysql

 the version of mysql in pom.xml should be same as the version of mysql installed (mine is 8.0.14)
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <version>8.0.14</version>

étape 3: -si le fichier jar mysql-connector n'est pas présent dans le référentiel maven, vous pouvez télécharger le fichier jar de la version 8.0.14 et le coller dans le référentiel.

$ \. m2\repository\mysql\mysql-connector-Java\8.0.14

étape 4: - mettez à jour votre projet maven

étape 5: - recherchez driverClassName dans config.xml, il devrait s'agir de "com.mysql.cj.jdbc.Driver".

4
kartik kumar

J'ai fait ce que le message suggère. J'ai eu dans pom.xml:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>5.1.18</version>
</dependency>

et changé en dernière version :

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>8.0.12</version>
</dependency>
1
KinGamer

vérifiez votre mysql-connector-Java-version.jar (ex: mysql-connector-Java-8.0.11.jar) dans le dossier lib de votre projet et effectuez la mise à niveau en conséquence.

1
parvinB

Vous devez mettre à jour le mot de passe de l'utilisateur de la base de données à l'aide de la fonction OLD_PASSWORD de MySQL. SOLUTION

Par exemple:

[rajesh-tpl-01@home ~]$ mysql -u root -p mysql
Enter password:

mysql> update user set password=OLD_PASSWORD('password') WHERE 
user='username';
Query OK, 0 rows affected (0.02 sec)
Rows matched: 0  Changed: 0  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
1
rajesh

Il suffit de mettre à jour la version dans le fichier POM.XML. Si le problème ne concerne que la version du client, il suffit de mettre à niveau la dernière version -> puis de nettoyer le projet. C'est couru avec succès.

0
shubham

Il suffit de mettre à jour votre mysql-connector-Java vers la dernière version sans rien d'autre

0
uday

Le problème est avec mysql-connector-Java version 5.1.6. Essayez de passer à la version 5.1.44. Travaillé pour moi J'ai utilisé la version de dépendance suivante:

compile group: 'mysql', name: 'mysql-connector-Java', version: '5.1.44'
0
Aman Gupta