15
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)

I get this error even after updating mysql password. I read in some posts that mysql has a new caching mechanism and all clients need to run the following which I already did but still the same error:

 update user set authentication_string='test' where user='root';
 flush privileges   
sirajnadwar
  • 237
  • 2
  • 6
  • 13

8 Answers8

15

Step 1: Check the version of your current Mysql using: SELECT version(); query.

step 2: Check the version of Mysql jdbc driver or Mysql dependency in your maven.

step 3: Upgrade the jar version or the maven dependency version for Mysql.

Iwo Kucharski
  • 3,735
  • 3
  • 50
  • 66
suraz
  • 309
  • 1
  • 4
  • 8
13

this issue can be rectified using below steps:-

step 1 :- run below query in mysql and restart it (for version >8.0 ,username is root here)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';

step 2:- check the version of your mysql by running select version(); in 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>

step 3:-if the mysql-connector jar file is not there in maven repository you can download the 8.0.14 version jar and can paste it in repository

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

step 4:- update your maven project

step 5:- check for driverClassName in config.xml, it should be "com.mysql.cj.jdbc.Driver".

kartik kumar
  • 131
  • 1
  • 3
6

I've done what the message suggests. I had in pom.xml:

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

and changed to the latest version:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>
KinGamer
  • 491
  • 5
  • 7
2

check your mysql-connector-java-version.jar(ex: mysql-connector-java-8.0.11.jar) in the lib folder of your project and upgrade accordingly.

parvinB
  • 21
  • 2
1

You have to update the database user’s password using the OLD_PASSWORD function of MySQL. SOLUTION

For example:

[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)
user207421
  • 305,947
  • 44
  • 307
  • 483
rajesh
  • 285
  • 4
  • 19
1

Just update u r mysql-connector-java to latest version no need any thing else

uday
  • 57
  • 3
1

The issue is with mysql-connector-java version 5.1.6. Try upgrading to version 5.1.44. Worked for me. I used the following dependency version:

compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
Aman Gupta
  • 71
  • 1
  • 10
0

Just update the version in POM.XML file, if problem is only regarding to the client version, just upgrade the latest version -> then clean project. It's successfuly run's.

shubham
  • 11
  • 4