Как разрешить Невозможно загрузить версию плагина "caching_sha2_password"
В eclipse, когда я начал свое приложение, я получил это - Не удалось обнаружить диалект для использования. java.sql.SQLException: невозможно загрузить плагин проверки подлинности 'caching_sha2_password'.
at java.sql.SQLException: невозможно загрузить плагин аутентификации 'caching_sha2_password'. at at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:868) at at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:864) at at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO. java: 1746) at at 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.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:47) at at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) at at sun.reflect.NativeConstructorAccessorImpl.newInstance (Неизвестный источник) at at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Неизвестный источник) в в java.lang.reflect.Constructor.newInstance (Неизвестный источник) на com.mysql.jdbc.Util.handleNewInstance(Util.java:425) на t com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389) по адресу com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) по адресу java.sql.DriverManager.getConnection (Неизвестный источник) в at java.sql.DriverManager.getConnection (Неизвестный источник) на странице ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection(DriverManagerConnectionSource.java:54) на странице ch.qos.logback.core.db.ConnectionSourceBase.discoverConnectionProperties(ConnectionSourceBase.java: 46) at at ch.qos.logback.core.db.DriverManagerConnectionSource.start(DriverManagerConnectionSource.java:38) в ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.java:161 ) на странице 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.java:152) на странице ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110) на странице ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53) в ch.qos. logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75) на странице ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150) по адресу org.slf4j.impl.StaticLoggerBinder.init( StaticLoggerBinder.java:84) по адресу org.slf4j.impl.StaticLoggerBinder. (StaticLoggerBinder.java:55) по адресу org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) по адресу org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java: 124) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412) at at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addSta tus (StatusViaSLF4JLoggerFactory.java:32) на странице ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20) на странице ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java: 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 (Неизвестный источник ) at at java.util.concurrent.ThreadPoolExecutor.runWorker (Неизвестный источник) по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (Неизвестный источник) на странице java.lang.Thread.run (Неизвестный источник)
Ответы
Ответ 1
Начиная с 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
Ответ 2
Возможно, вы используете неправильный mysql_connector.
Использовать соединитель той же версии mysql
Ответ 3
Я ударил эту ошибку в одном приложении Spring Boot, но не в другом. Наконец, я нашел версию Spring Boot в том, что она не работает 2.0.0.RELEASE, и тот, который работал, был 2.0.1.RELEASE. Это привело к различию в MySQL Connector - 5.1.45 и 5.1.46. Я обновил версию Spring Boot для приложения, которое выбрасывало эту ошибку при запуске, и теперь оно работает.
Ответ 4
Обновите lib-пакет вашего mysql-соединителя вашей версией mysql, как показано ниже. Я использую версию 8.0.13, и в pom я изменил версию:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.13</version>
</dependency>
Моя проблема разрешилась после этого.
Ответ 5
Вам нужно просто удалить старый коннектор и загрузить новую версию (mysql-connector-java-5.1.46)
Ответ 6
Я использую mysql 8.0.12, и обновление mysql-коннектора к mysql-connector-java-8.0.12 разрешило проблему для меня.
Надеюсь, это поможет кому-то.
Ответ 7
Как упоминалось выше в надписи:
Начиная с 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';
Ответ 8
Я столкнулся с этой проблемой в NetBeans при работе с готовым проектом из этой книги JSP Murach. Проблема была вызвана использованием соединителя J 5.1.23 с базой данных MySQL 8.0.13. Мне нужно было заменить старый драйвер на новый. После загрузки Соединителя J, это заняло три шага.
Как заменить проектный соединитель NetBeans J:
-
Загрузите текущий разъем J здесь. Затем скопируйте его в свою ОС.
-
В NetBeans щелкните вкладку "Файлы", которая находится рядом с вкладкой "Проекты". Найдите mysql-connector-java-5.1.23.jar или любой другой старый соединитель, который у вас есть. Удалите этот старый разъем. Вставьте в новый разъем.
-
Нажмите на вкладку Проекты. Перейдите в папку "Библиотеки". Удалите старый соединитель MySQL. Щелкните правой кнопкой мыши папку "Библиотеки". Выберите Добавить банку/папку. Перейдите к месту, куда вы положили новый разъем, и выберите "Открыть".
-
На вкладке Project щелкните правой кнопкой мыши проект. Выберите Разрешить источники данных в нижней части всплывающего меню. Нажмите на Добавить соединение. На этом этапе NetBeans переходит вперед и предполагает, что вы хотите использовать старый соединитель. Нажмите кнопку Назад, чтобы вернуться к пропущенному окну. Удалите старый разъем и добавьте новый разъем. Нажмите Next и Test Connection, чтобы убедиться, что он работает.
Для ссылки на видео я нашел это полезным. Для IntelliJ IDEA я нашел это полезным.
Ответ 9
У вас возникла проблема с новой версией 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;
Ответ 10
Я думаю, что лучше обновить пакет "mysql-connector" lib, поэтому база данных может быть еще более безопасной.
Я использую mysql версии 8.0.12. Когда я обновил mysql-connector-java до версии 8.0.11, проблема исчезла.
Ответ 11
Это могут быть ваши соединители для MySQL, которые необходимо обновить, так как MySQL8 изменил шифрование паролей - поэтому старые соединители шифруют их неправильно.
Репозиторий Maven для Java-коннектора можно найти здесь.
Если вы используете плагин flyway, вам также следует рассмотреть возможность его обновления!
Тогда вы можете просто обновить свой Maven Pom с помощью:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
Или для тех, кто использует Gradle, вы можете обновить build.gradle с помощью:
buildscript {
ext {
...
}
repositories {
...
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath('mysql:mysql-connector-java:8.0.11')
}
}
Ответ 12
Если вы можете обновить свой коннектор до версии, которая поддерживает новый модуль аутентификации MySQL 8, сделайте это. Если по какой-либо причине это не вариант, измените метод аутентификации по умолчанию для пользователя базы данных на native.
Ответ 13
Я сделал точно такую же проблему, используя зависимость ниже:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
Я просто перехожу на версию 46 и все работает.
Ответ 14
удалите файл connect.jar, если вы добавили файл jar файла с несколькими версиями, добавьте только файл jar файла соединителя, соответствующий вашей версии sql.
Ответ 15
Другой причиной может быть тот факт, что вы указываете на неправильный порт.
Убедитесь, что вы на самом деле указываете на правильный SQL-сервер. Возможно, у вас установлена установка MySQL по умолчанию, работающая на 3306, но на самом деле вам может понадобиться другой экземпляр MySQL.
Проверьте порты и запустите некоторый запрос против db.