java - test - Как решить проблему с невозможностью загрузки плагина аутентификации caching_sha2_password




struts s if (10)

В затмении, когда я запустил свое приложение, я получил это - Не удалось обнаружить диалект для использования. java.sql.SQLException: Невозможно загрузить плагин аутентификации caching_sha2_password.

at java.sql.SQLException: Невозможно загрузить плагин аутентификации caching_sha2_password. по адресу com.mysql.jdbc.SQLError.createSQLException (SQLError.java:868) по адресу com.mysql.jdbc.SQLError.createSQLException (SQLError.java:864) по адресу com.mysql.jdbc.Mysuthlug Java: 1746) по адресу com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) по адресу com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2191) по адресу com.mysql.jdbc.ConnectionImpl. connectOneTryOnly (ConnectionImpl.java:2222) по адресу com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2017) по адресу com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:779) по адресу com.myscl. .JDBC4Connection. (JDBC4Connection.java:47) в at.jpg.reflect. по адресу java.lang.reflect.Constructor.newInstance (неизвестный источник) по адресу com.mysql.jdbc.Util.handleNewInstance (Util.java:425) по адресу t com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:389) в at com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:330) в java.sql.DriverManager.getConnection в неизвестный источник java.sql.DriverManager.getConnection (Неизвестный источник) по адресу ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection (DriverManagerConnectionSource.java:54) по адресу ch.qos.logback.core.db.ConnectionSourceBase.ProasetiesConnect .java: 46) по адресу ch.qos.logback.core.db.DriverManagerConnectionSource.start (DriverManagerConnectionSource.java:38) по адресу ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end (NestedComplexPropertyIA.java: ) по адресу ch.qos.logback.core.joran.spi.Interpreter.callEndAction (Interpreter.java:309) по адресу ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:193) по адресу в ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:179) в в ch.qos.logback.core.joran.spi.EventPlayer.play (EventPl ayer.java:62) по адресу ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:165) по адресу ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.j) по адресу ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:110) по адресу ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:53) по адресу ch.qq. logback.classic.util.ContextInitializer.configureByResource (ContextInitializer.java:75) по адресу в ch.qos.logback.classic.util.ContextInitializer.autoConfig (ContextInitializer.java:150) по адресу org.slf4j.impl.Inin StaticLoggerBinder.java:84) в atg.slf4j.impl.StaticLoggerBinder. (StaticLoggerBinder.java:55) в org.slf4j.LoggerFactory.bind (LoggerFactory.java:150) в org.slf4j.LoggerFactory .java: 124) по адресу org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.java:412) по адресу ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addSta tus (StatusViaSLF4JLoggerFactory.java:32) по адресу ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo (StatusViaSLF4JLoggerFactory.java:20) по адресу ch.qos.logbacker 32) по адресу org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5245) по адресу org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) по адресу org.apache.catalina. core.ContainerBase $ StartChild.call (ContainerBase.java:1421) по адресу org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1411) по адресу java.util.concurrent.FutureTask.run (неизвестный источник). ) по адресу java.util.concurrent.ThreadPoolExecutor.runWorker (неизвестный источник) по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) по адресу java.lang.Thread.run (неизвестный источник)


Начиная с MySQL 8.0.4, они изменили плагин аутентификации по умолчанию для сервера MySQL с mysql_native_password на caching_sha2_password .

Вы можете запустить приведенную ниже команду, чтобы решить проблему.

пример имени пользователя / пароля => student / pass123

ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

Обратитесь к официальной странице для деталей: Справочное руководство MySQL


Вам нужно просто удалить свой старый соединитель и загрузить новую версию (mysql-connector-java-5.1.46)


Если вы можете обновить свой соединитель до версии, которая поддерживает новый плагин аутентификации MySQL 8, то сделайте это. Если по какой-либо причине это невозможно, измените метод аутентификации по умолчанию для пользователя базы данных на собственный.


Как упомянуто в вышеупомянутых ответах:

Начиная с MySQL 8.0.4, команда MySQL изменила подключаемый модуль аутентификации по умолчанию для сервера MySQL с mysql_native_password на caching_sha2_password.

Таким образом, есть три способа решить эту проблему:

 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';

Обновите пакет lib вашего mysql-connector "с вашей версией mysql, как показано ниже. Я использую версию 8.0.13 и в pom я изменил версию:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.13</version>
</dependency>

Моя проблема разрешилась после этого.


У вас проблема с новой версией MySQL, которая поставляется с плагином "caching_sha2_password", следуйте приведенной ниже команде, чтобы решить ее.

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';

Или вы можете просто использовать приведенную ниже команду, чтобы сохранить ваши привилегии как есть:

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;

Я думаю, что лучше обновить ваш пакет lib "mysql-connector", чтобы база данных была еще более безопасной.

Я использую mysql версии 8.0.12. Когда я обновил mysql-connector-java до версии 8.0.11, проблема исчезла.


Я использую mysql 8.0.12 и обновляю соединитель mysql до mysql-connector-java-8.0.12, чтобы решить эту проблему для меня.

Надеюсь, это кому-нибудь поможет.


Я сталкивался с этой ошибкой в ​​одном приложении Spring Boot, но не в другом. Наконец, я обнаружил, что версия Spring Boot в той, которая не работала, была 2.0.0.RELEASE, а та, которая работала, была 2.0.1.RELEASE. Это привело к разнице в MySQL Connector - 5.1.45 против 5.1.46. Я обновил версию Spring Boot для приложения, которое выдает эту ошибку при запуске, и теперь оно работает.


Я столкнулся с этой проблемой в NetBeans при работе с готовым проектом из этой книги JSP Murach . Проблема была вызвана использованием соединителя J 5.1.23 с базой данных MySQL 8.0.13. Мне нужно было заменить старый драйвер на новый. После загрузки Соединителя J, это заняло три шага.

Как заменить проектный соединитель NetBeans J:

  1. Загрузите текущий разъем J here . Затем скопируйте его в свою ОС.

  2. В NetBeans щелкните вкладку «Файлы», которая находится рядом с вкладкой «Проекты». Найдите mysql-connector-java-5.1.23.jar или любой другой старый соединитель, который у вас есть. Удалите этот старый разъем. Вставьте в новый разъем.

  3. Нажмите на вкладку Проекты. Перейдите в папку «Библиотеки». Удалите старый соединитель MySQL. Щелкните правой кнопкой мыши папку «Библиотеки». Выберите Добавить банку / папку. Перейдите к месту, куда вы положили новый разъем, и выберите «Открыть».

  4. На вкладке Project щелкните правой кнопкой мыши проект. Выберите Разрешить источники данных в нижней части всплывающего меню. Нажмите на Добавить соединение. На этом этапе NetBeans переходит вперед и предполагает, что вы хотите использовать старый соединитель. Нажмите кнопку Назад, чтобы вернуться к пропущенному окну. Удалите старый разъем и добавьте новый разъем. Нажмите Next и Test Connection, чтобы убедиться, что он работает.

Для ссылки на видео я нашел this полезным. Для IntelliJ IDEA я нашел this полезным.