MySQLNonTransientConnectionException: клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотреть вопрос об обновлении клиента MySQL

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

Я получаю эту ошибку даже после обновления пароля mysql. Я прочитал в некоторых сообщениях, что mysql имеет новый механизм кэширования, и всем клиентам необходимо запустить следующее, которое я уже сделал, но все еще ту же ошибку:

 update user set authentication_string='test' where user='root';
 flush privileges   
  • 1
    Пожалуйста, проверьте версию зависимости и установленного сервера MySQL.
  • 0
    Да, ты прав. Проблема возникла с версией сервера MySQL 8.11. Когда я перешел на 5.7 версию, проблема ушла
Показать ещё 2 комментария
Теги:
spring
tomcat

8 ответов

4

Шаг 1: Проверьте версию вашего текущего Mysql, используя: SELECT version(); запрос.

Шаг 2: Проверьте версию драйвера Mysql jdbc или зависимость Mysql в вашем maven.

Шаг 3: Обновите версию jar или версию зависимости maven для Mysql.

3

Эта проблема может быть устранена с помощью следующих шагов: -

шаг 1: - запустите запрос ниже в mysql и перезапустите его (для версии> 8.0 здесь имя пользователя root)

ALTER USER 'root' @'localhost' ИДЕНТИФИЦИРОВАНО С mysql_native_password BY 'yourpassword';

шаг 2: - проверьте версию вашего mysql, запустив select version(); в 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>

Шаг 3: -if файл jar коннектора mysql отсутствует в репозитории maven. Вы можете скачать jar версии 8.0.14 и вставить его в репозиторий.

$ \. М2\репозиторий\MySQL\MySQL-разъем-Java\8.0.14

шаг 4: - обновите свой проект Maven

Шаг 5: - проверьте имя драйвера в классе config.xml, оно должно быть "com.mysql.cj.jdbc.Driver".

1

Я сделал то, что предлагает сообщение. У меня в pom.xml:

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

и изменилась до последней версии:

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

проверьте ваш mysql-connector-java-version.jar (например: mysql-connector-java-8.0.11.jar) в папке lib вашего проекта и соответствующим образом обновите.

1

Вы должны обновить пароль пользователей базы данных, используя функцию OLD_PASSWORD MySQL. РЕШЕНИЕ

Например:

[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)
0

Просто обновите версию в файле POM.XML, если проблема касается только клиентской версии, просто обновите последнюю версию → затем очистите проект. Это успешно работает.

Изображение 174551

0

Проблема заключается в mysql-connector-java версии 5.1.6. Попробуйте перейти на версию 5.1.44. Работал для меня. Я использовал следующую версию зависимостей:

compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
  • 0
    5.1.6 - более ранняя версия. Переход на 5.1.44 будет обновлением .
0

Просто обновите ur mysql-connector-java до последней версии, не нужно ничего

  • 0
    На самом деле это то, что вызвало проблему в первую очередь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню