it-roy-ru.com

Как решить Не удалось загрузить плагин аутентификации caching_sha2_password

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

в Java.sql.SQLException: Невозможно загрузить плагин аутентификации 'Caching_sha2_password. в at com.mysql.jdbc.SQLError.createSQLException (SQLError.Java:868) в com.mysql.jdbc.SQLError.createSQLException (SQLError.Java:864) в com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication (MysqlIO.Java:1746) по адресу com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.Java:1226) по адресу com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.Java:2191) в at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.Java:2222) в at com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.Java:2017) по адресу com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.Java:779) по адресу com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.Java:47) at at Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) в at Sun.reflect.NativeConstructorAccessorImpl.newInstance (Неизвестный источник) в at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Неизвестно Источник) по адресу в Java.lang.reflect.Constructor.newInstance (Неизвестно Источник) по адресу com.mysql.jdbc.Util.handleNewInstance (Util.Java:425) в at com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.Java:389) в в 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) в at ch.qos.logback.core.db.ConnectionSourceBase.discoverConnectionProperties (ConnectionSourceBase.Java:46) в at ch.qos.logback.core.db.DriverManagerConnectionSource.start (DriverManagerConnectionSource.Java:38) в at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end (NestedComplexPropertyIA.Java:161) в at ch.qos.logback.core.joran.spi.Interpreter.callEndAction (Interpreter.Java:309) в at ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.Java:193) в at ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.Java:179) в at ch.qos.logback.core.joran.spi.EventPlayer.play (EventPlayer.Java:62) в at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:165) в at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:152) в at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:110) в at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.Java:53) в at ch.qos.logback.classic.util.ContextInitializer.configureByResource (ContextInitializer.Java:75) в at ch.qos.logback.classic.util.ContextInitializer.autoConfig (ContextInitializer.Java:150) в at org.slf4j.impl.StaticLoggerBinder.init (StaticLoggerBinder.Java:84) в в org.slf4j.impl.StaticLoggerBinder. (StaticLoggerBinder.Java:55) в atg.slf4j.LoggerFactory.bind (LoggerFactory.Java:150) в at org.slf4j.LoggerFactory.performInitialization (LoggerFactory.Java:124) в at org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.Java:412) в в ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus (StatusViaSLF4JLoggerFactory.Java:32) в at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo (StatusViaSLF4JLoggerFactory.Java:20) в at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup (LogbackServletContainerInitializer.Java:32) в at org.Apache.catalina.core.StandardContext.startInternal (StandardContext.Java:5245) в at org.Apache.catalina.util.LifecycleBase.start (LifecycleBase.Java:150) в at org.Apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.Java:1421) в at 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 (Неизвестный источник) at at Java.lang.Thread.run (Неизвестный источник)

37
Sarath Mohan

Начиная с 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

67
Gaurav

Может быть, вы используете неправильный mysql_connector.

Используйте разъем той же версии MySQL

12
Vishal Boinapalli

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

8
Greg Charles

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

5
Turab

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

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

3
Santosh Gatlewar

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

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

  1. Загрузите текущий Соединитель J от здесь . Затем скопируйте его в свою ОС.

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

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

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

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

2
Jack J

У вас проблема с новой версией 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;
2
user8406805

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

Начиная с 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';
2
DC-

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

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

1
Jack Ma

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

1
DataVader

Другой причиной может быть тот факт, что вы указываете не на тот порт.

Убедитесь, что вы действительно указываете на правильный сервер SQL. У вас может быть установленная по умолчанию установка MySQL на 3306, но вам может понадобиться другой экземпляр MySQL.

Проверьте порты и выполните некоторый запрос к базе данных.

0
Aquazi

Обновите пакет 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>

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

0
alok

удалите файл .jar для подключения, если вы добавили JAR-файл соединителя с несколькими версиями, добавьте только JAR-файл соединителя, соответствующий вашей версии SQL.

0
user10434384