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
É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.
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".
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>
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.
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)
Il suffit de mettre à jour votre mysql-connector-Java vers la dernière version sans rien d'autre
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'