Podczas zaćmienia, kiedy uruchomiłem moją aplikację, otrzymałem to - Nie udało się znaleźć dialektu do użycia. java.sql.SQLException: nie można załadować wtyczki uwierzytelniającej „caching_sha2_password”.
at java.sql.SQLException: Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”. pod adresem com.mysql.jdbc.SQLError.createSQLException (SQLError.java:868) pod adresem com.mysql.jdbc.SQLError.createSQLException (SQLError.java:864) pod adresem com.mysql.jdbc.Mithqlandshake. java: 1746) pod adresem com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) pod adresem com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2191) pod adresem com.mysql.jdbc.ConnectionImpl. connectOneTryOnly (ConnectionImpl.java:2222) pod adresem com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2017) pod adresem com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:779) pod adresem com.mysql.jdbc .JDBC4Connection. (JDBC4Connection.java:47) pod adresem sun.reflect.NativeConstructorAccessorImpl.
Inni wskazywali na problem z rootem, ale w moim przypadku korzystałem z dbeaver i początkowo podczas konfigurowania połączenia mysql z dbeaver wybierałem niewłaściwy sterownik mysql (kredyt tutaj za odpowiedź: https://github.com/dbeaver/dbeaver/ Issues / 4691 # issuecomment-442173584 )
Wybranie opcji MySQL na poniższym rysunku spowoduje wyświetlenie błędu wspomnianego, ponieważ sterownik to mysql 4+, który można zobaczyć we wskazówce dotyczącej bazy danych.
Zamiast wybierać sterownik MySQL zamiast tego wybierz sterownik MySQL 8+, pokazany na poniższym rysunku.
źródło
Public key retrieval is not allowed
Uaktualnij swój pakiet mysql-connector "lib z twoją wersją mysql jak poniżej. Używam wersji 8.0.13 iw pom zmieniłem wersję:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.13</version> </dependency>
Po tym mój problem został rozwiązany.
źródło
Być może używasz złego mysql_connector.
Użyj łącznika tej samej wersji mysql
źródło
Wystąpił ten błąd w jednej aplikacji Spring Boot, ale nie w innej. Wreszcie znalazłem wersję Spring Boot w wersji 2.0.0.RELEASE, która nie działała, a wersja 2.0.1.RELEASE. Doprowadziło to do różnicy w łączniku MySQL - 5.1.45 w porównaniu z 5.1.46. Zaktualizowałem wersję Spring Boot dla aplikacji, która generowała ten błąd podczas uruchamiania i teraz działa.
źródło
Wystarczy usunąć starsze złącze i pobrać nową wersję (mysql-connector-java-5.1.46)
źródło
Używam mysql 8.0.12 i zaktualizowanie łącznika mysql do mysql-connector-java-8.0.12 rozwiązało problem.
Mam nadzieję, że to komuś pomoże.
źródło
Mogą to być twoje konektory dla MySQL, które wymagają aktualizacji, ponieważ MySQL8 zmienił szyfrowanie haseł - więc starsze konektory szyfrują je nieprawidłowo.
Repozytorium Maven dla konektora Java można znaleźć tutaj .
Jeśli używasz wtyczki flyway , powinieneś również wziąć pod uwagę jej aktualizację !
Następnie możesz po prostu zaktualizować swój maven pom za pomocą:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>
Lub dla innych, którzy używają Gradle , możesz zaktualizować build.gradle za pomocą:
buildscript { ext { ... } repositories { ... mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath('mysql:mysql-connector-java:8.0.11') } }
źródło
Jak wspomniano w powyższych repillach:
Począwszy od MySQL 8.0.4, zespół MySQL zmienił domyślną wtyczkę uwierzytelniającą dla serwera MySQL z mysql_native_password na caching_sha2_password.
Istnieją więc trzy sposoby rozwiązania tego problemu:
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';
źródło
Masz problem z nową wersją MySQL, która została dostarczona z wtyczką „caching_sha2_password”. Wykonaj poniższe polecenie, aby go rozwiązać.
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';
Lub możesz po prostu użyć poniższego polecenia, aby zachować swoje uprawnienia bez zmian:
ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
źródło
Myślę, że lepiej zaktualizować swój pakiet lib "mysql-connector", aby baza danych była jeszcze bezpieczniejsza.
Używam mysql w wersji 8.0.12. Kiedy zaktualizowałem mysql-connector-java do wersji 8.0.11, problem zniknął.
źródło
5.1.44
z mysql 8. użyłem najnowszej wersji, która jest 8.0.19 i to działa!Napotkałem ten problem na NetBeans podczas pracy z gotowym projektem z tej książki Murach JSP . Problem był spowodowany użyciem złącza J 5.1.23 z bazą danych MySQL 8.0.13. Musiałem wymienić stary sterownik na nowy. Po pobraniu Connector J wymagało to trzech kroków.
Jak wymienić złącze J projektu NetBeans:
Pobierz aktualną wersję Connector J stąd . Następnie skopiuj go do swojego systemu operacyjnego.
W NetBeans kliknij zakładkę Pliki, która znajduje się obok zakładki Projekty. Znajdź mysql-connector-java-5.1.23.jar lub jakiekolwiek inne posiadane stare złącze. Usuń to stare oprogramowanie sprzęgające. Wklej nowy łącznik.
Kliknij zakładkę Projekty. Przejdź do folderu Biblioteki. Usuń stary łącznik mysql. Kliknij prawym przyciskiem myszy folder Biblioteki. Wybierz Dodaj słoik / folder. Przejdź do lokalizacji, w której umieścisz nowe złącze, i wybierz opcję Otwórz.
Na karcie Projekt kliknij projekt prawym przyciskiem myszy. Wybierz Rozwiąż źródła danych w dolnej części menu podręcznego. Kliknij Dodaj połączenie. W tym momencie NetBeans przeskakuje do przodu i zakłada, że chcesz użyć starego złącza. Kliknij przycisk Wstecz, aby wrócić do pominiętego okna. Usuń stare złącze i dodaj nowe złącze. Kliknij Dalej i Testuj połączenie, aby upewnić się, że działa.
Okazało się, że jest to przydatne do celów wideo . W przypadku IntelliJ IDEA okazało się to przydatne.
źródło
Zrobiłem dokładnie ten sam problem, używając poniższej zależności:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency>
Po prostu zmieniam na wersję 46 i wszystko działa.
źródło
Jeśli możesz zaktualizować oprogramowanie sprzęgające do wersji, która obsługuje nową wtyczkę uwierzytelniania MySQL 8, zrób to. Jeśli z jakiegoś powodu nie jest to możliwe, zmień domyślną metodę uwierzytelniania użytkownika bazy danych na natywną.
źródło
usuń plik connect .jar, jeśli dodano plik jar łącznika wielu wersji, dodaj tylko plik jar łącznika, który jest zgodny z wersją sql.
źródło
Inną przyczyną może być fakt, że wskazujesz niewłaściwy port.
Upewnij się, że faktycznie wskazujesz właściwy serwer SQL. Możesz mieć domyślną instalację MySQL działającą na 3306, ale w rzeczywistości możesz potrzebować innej instancji MySQL.
Sprawdź porty i wyślij zapytanie do bazy danych.
źródło