Wtyczka uwierzytelniania „caching_sha2_password” nie może zostać załadowana


435

Łączę MySQL - 8.0 z MySQL Workbench i pojawia się następujący błąd:

Nie można załadować wtyczki uwierzytelniającej „caching_sha2_password”: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): obraz nie został znaleziony

Próbowałem również z innym narzędziem klienta.

Jakieś rozwiązanie tego?


2
Możesz rozwiązać ten problem, jeśli skonfigurujesz MySQL 8.0 do działania w trybie mysql_native_password.
— Raymond Nijland,

6
Prawidłowo, MySQL Workbench wymaga aktualizacji łącznika, aby móc pracować z buforowanymi hasłami sha2 (wkrótce).
— Mike Lischke,

7
Ustawiłem domyślny login na natywny i zrestartowałem, problem nadal występuje i nie mogę się zalogować, aby utworzyć nowego użytkownika. Zaskakujące, że w 2018 roku instalacja MySQL i środowiska roboczego nie kończy się po wyjęciu z pudełka. Tandetna kontrola jakości.
— ChrisR

1
Nie wiem, skąd masz wrażenie, że nie będzie już 32-bitowej biblioteki klienta MySQL, ale to nieprawda. Prawdą jest, że MySQL Workbench nie jest już dostępny w wersji 32-bitowej.
— Mike Lischke

2
Odpowiedzi sugerujące użycie słabszego szyfrowania są niewłaściwe. Używaj innych klientów, takich jak tableplus .
— ohkts11

Odpowiedzi:


279

Uwaga: w systemie Mac OS

  1. Otwórz MySQL w Preferencjach systemowych> Zainicjuj bazę danych>
  2. Wpisz swoje nowe hasło.
  3. Wybierz „Użyj starszego hasła”
  4. Uruchom ponownie serwer.
  5. Teraz podłącz MySQL Workbench

opis obrazu


Pomogło to w OSX
— Salam

2
Ta praca, dzięki. Myślę, że to działa, ponieważ środowisko robocze MySQL używa starszego szyfrowania hasła do łączenia się z serwerem DB. Można to również zrobić podczas instalacji MySQL i wybrania starszego szyfrowania zamiast zalecanego silnego szyfrowania hasłem.
— mnich Sinha

1
Niektóre wersje mysql mają inny panel ustawień i to nie działa
— Michael Yang

8
Reklama, aby wrócić do starego i mniej bezpiecznego uwierzytelniania, wcale nie jest dobrym rozwiązaniem.
— Mike Lischke,

63
Nie mam MySQL w Preferencjach systemowych
— JavaRunner

247

możesz zmienić szyfrowanie hasła w ten sposób.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

33
Co jeśli OP chce użyć zupełnie nowej, fajnej metody uwierzytelniania?
— LibertyPaul

@twocold, ładne zapytanie skryptu. + 1
— Md Haidar Ali Khan

Pamiętaj, że twoja nazwa użytkownika i hasło powinny być ujęte w pojedyncze cudzysłowy, jak pokazano w kodzie przez @twocold.
— matryca

@twocold Jak „cofnąć” ALTER USER powyżej z powrotem do standardu MySQL 8.0 (nowy poziom szyfrowania), gdy to zrobisz i nie działa?
— Will Belden

1
@BrianFitzGerald to „caching_sha2_password”, link tutaj lub tutaj .
— Yan Karin

114

W systemie Windows 10:

Otwórz wiersz polecenia:

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: *********

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';
Query OK, 0 rows affected (0.10 sec)

mysql> exit

Alternatywnie możesz zmienić konfigurację my.ini w następujący sposób:

[mysqld]

default_authentication_plugin=mysql_native_password

Uruchom ponownie serwer MySQL i ponownie otwórz Workbench.


1
Zmiana pliku my.ini nie zadziałałaby dla mnie - ale zmiana wiersza polecenia zadziałała.
— amelvin

Zmiana my.ini rozwiązała mój problem. Dzięki.
— berkant

my.inilokalizacja pliku: stackoverflow.com/a/20311286/923560
— Abdull

Chcę tylko zauważyć, że konfiguracja musi zostać wykonana na serwerze, z którym chcesz się połączyć, a ALTER USER pracował dla mnie, aby połączyć się z systemem Windows ze zdalnym serwerem mysql
— Alcides

Nie tylko Windows 10
— Geza Turi

76

Możesz zmienić szyfrowanie hasła użytkownika, zmieniając go za pomocą poniższej komendy Alter:

ZMIEŃ UŻYTKOWNIKA „nazwa użytkownika” @ „adres_ip” ZIDENTYFIKOWANO Z hasłem mysql_native_password BY „hasło”;

LUB

Możemy uniknąć tego błędu, uruchamiając go ze starą wtyczką hasła:

Najpierw zmień wtyczkę uwierzytelniającą w pliku my.cnf dla pliku Linux / my.ini w systemie Windows :

[mysqld]

default_authentication_plugin = mysql_native_password

Zrestartuj serwer mysql, aby zastosować zmiany i spróbuj połączyć się przez MySQL z dowolnym klientem mysql.

Jeśli nadal nie można się połączyć i pojawia się następujący błąd:

Unable to load plugin 'caching_sha2_password'

Oznacza to, że użytkownik potrzebuje powyższej wtyczki. Spróbuj więc utworzyć nowego użytkownika za pomocą polecenia create user lub grant po zmianie domyślnej wtyczki. wtedy nowy użytkownik potrzebuje natywnej wtyczki i będziesz mógł połączyć MySQL.

Dzięki


5
Zdecydowanie nie jest to rozwiązanie problemu z brakującą wtyczką.
— LibertyPaul

1
To jest. Problem polega na tym, że oprogramowanie do zarządzania DB jeszcze tego nie obsługuje. Więc jeśli nie jesteś programistą mysql workbench, jest to na razie twoje obejście.
— Kevin Gagnon

Pracował dla mnie. Dzięki
— Lucas Araújo

Kluczowa jest część dotycząca tworzenia nowego użytkownika po dodaniu flagi konfiguracji.
— nipponese

70

Obecnie (w dniu 2018/04/23) musisz pobrać wersję rozwojową . Te GA nie działają.

Nie mogłem połączyć się z najnowszą wersją GA (6.3.10).

Działa z mysql-workbench-community-8.0.11-rc-winx64.msi(od https://dev.mysql.com/downloads/workbench/ , zakładka Wydania programistyczne ).


4
To jest prawidłowa odpowiedź: MySQL 8.0 wymaga MySQL Workbench 8.0, który niestety nadal wygląda w trybie beta. Ale po zainstalowaniu możesz trzymać się nowego szyfrowania hasła SHA, nie musisz niczego zmieniać.
— Cristi S.

Nie beta, ale kandydat do wydania (RC). Wersja GA (ogólnie dostępna) już wkrótce.
— Mike Lischke,

Najlepszy pomysł dla mnie.
— Wojciech Fornal

2
Tak jest nadal. Instalacja wersji GA nadal powoduje brak możliwości logowania przy użyciu zalecanego szyfrowania hasłem. Nie ma ostrzeżenia, że ​​wersja GA działa tylko z wcześniejszym uwierzytelnieniem.
— Donald Rich,

2
Przynajmniej w systemie MacOS wersja GA ma obecnie wersję 8.0.12 (2018/08/13) i rozwiązuje ten problem! Dzięki!
— Bruno Silvano,

63

Miałem ten sam problem, ale odpowiedź Amana Aggarwal nie działała dla mnie z kontenerem Docker z mysql 8.X. Zalogowałem się w kontenerze

docker exec -it CONTAINER_ID bash

następnie zaloguj się do mysql jako root

mysql --user=root --password

Wprowadź hasło dla użytkownika root (domyślnie jest to „root”). Wreszcie uruchom:

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

Wszystko gotowe.


Wygląda na to, że może to być dobra odpowiedź na to, czego szukam. Ale nie wiem, co to „to”. masz na myśli zaakceptowaną odpowiedź? lub inny ...
— Zach Smith

1
Tak @ZachSmith, „to” odnosi się do zaakceptowanego odbiorcy.
— axelferreira

A może docker exec -it CONTAINER_ID mysql --user=root --passwordzamiast dwóch poleceń opartych na obecności bashpowłoki (co nie jest pewne w przyszłości)?
— Eric,

Nie działało to z sequelpro 1.1.2 korzystającym z Dockera Desktop 2.0.3.0 (Mac). wszystkie polecenia działają, ale kolejne błędy pro podczas logowania - przy użyciu mysql: latest (v8.0.15)
— arcseldon

Jak informowali inni, używanie mysql 5.7 działa bez żadnych wymagań:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
— arcseldon

47

Ok, zmarnowałem na to dużo czasu, więc oto podsumowanie z 19 marca 2019 r

Jeśli szczególnie próbujesz użyć obrazu Docker z MySql 8+ , a następnie użyć SequelPro, aby uzyskać dostęp do bazy danych uruchomionej na tym kontenerze dokowanym , nie masz szczęścia.

Zobacz numer 2699 sequelpro

Moja konfiguracja to sequelpro 1.1.2 przy użyciu Dockera Desktop 2.0.3.0 (Mac - Mojave) i próbowałem przy użyciu mysql: latest (v8.0.15).

Jak informowali inni, używanie mysql 5.7 działa bez żadnych wymagań:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

Oczywiście możliwe jest użycie MySql 8+ w oknie dokowanym, aw tej sytuacji (w razie potrzeby) inne odpowiedzi podane tutaj dla caching_sha2_passwordproblemów z typem działają. Ale sequelpro to NIE GO z MySql 8+

Wreszcie porzuciłem sequelpro (zaufanego przyjaciela z lat 2013-2014) i zamiast tego zainstalowałem DBeaver . Wszystko działało od razu po wyjęciu z pudełka. Do dokera użyłem:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password

Możesz szybko zajrzeć do baz danych mysql, używając:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

1
Wielkie dzięki za udostępnienie tego. Próbowałem dokładnie tego samego zestawu po przypadkowym usunięciu mojego kontenera deweloperów MySQL.
— martn_st

1
Bardzo przykro, że Sequel Pro już nie rozwija się aktywnie :( Najnowsze wiadomości datowane na 3 kwietnia 2016 r., A już na 2019 r. To było najlepsze narzędzie, jakie widziałem dla eksploratora MySQL.
— Oleksii Shnyra

@OleksiiShnyra to prawda, że ​​od kilku lat nie ma wersji produkcyjnej, ale dostępne są nowe wersje „nightly”. sequelpro.com/test-builds i via brew cask install homebrew/cask-versions/sequel-pro-nightly.
— Peter W

Istnieje obejście, które może sprawić, że SequelPro będzie działać, dla tych, którzy będą mogli zalogować się za pomocą wiersza poleceń ( mysqlklienta) i ALTERtabeli myslq.user, tutaj: github.com/sequelpro/sequelpro/issues/…
— Peter W

Jeśli korzystasz z MySQL 8 i nie chcesz przejść na mysql_native_password
— starszą

46

Instalowałem MySQL na komputerze z systemem Windows 10 przy użyciu „ Instalatora internetowego MySQL ” i napotkałem ten sam problem podczas próby połączenia za pomocą środowiska roboczego MySQL. Rozwiązałem problem, zmieniając konfigurację serwera z okna instalatora.

Instalator sieci Web MySQL - ekran główny

Kliknięcie opcji „Ponowna konfiguracja” pozwoli na ponowną konfigurację serwera. Klikaj „Dalej”, aż dojdziesz do „Metoda uwierzytelnienia”.

Instalator MySQL - metoda uwierzytelniania

Na tej karcie użyj drugiej opcji „Użyj starszej metody uwierzytelniania (zachowaj zgodność z MySQL 5.x)”.

Zachowaj wszystko tak, jak jest i tak rozwiązałem mój problem.


1
Ręcznie rozpakowuję plik mysql-8.0.11-winx64.zip i nie mogę łatwo rozwiązać problemu „Nie można załadować hasła caching_sha2_password”. Jednak używając mysql-installer-community-8.0.11.0.msi i postępuję zgodnie z powyższymi zaleceniami, MySQL Workbench 8.0.11 może zalogować się do serwera MySQL 8.0.11.
— oraclesoon


21
  • Otwórz klienta wiersza poleceń MySQL

  • Utwórz nowego użytkownika z nową przepustką

Biorąc pod uwagę przykład ścieżki do folderu bin na górze, oto kod, który musisz uruchomić w wierszu polecenia, wiersz po wierszu:

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL -u root -p    
current password...***  
CREATE USER 'nativeuser'@'localhost'  
IDENTIFIED WITH mysql_native_password BY 'new_password';
  • Następnie możesz ponownie uzyskać dostęp do Workbench (powinieneś być w stanie to zrobić po utworzeniu nowego połączenia localhost i użyciu nowych poświadczeń, aby rozpocząć korzystanie z programu).

Skonfiguruj nowe połączenie z hostem lokalnym przy użyciu wyżej wymienionej nazwy użytkownika (użytkownik macierzysty), zaloguj się przy użyciu hasła (nowe hasło)

Wizerunek

Dzięki uprzejmości: UDEMY FAQ, na które odpowiedział zespół Career365


To zadziałało. Dlaczego? Wystąpił ten błąd podczas próby nawiązania połączenia rootbez hasła, które działało w wierszu polecenia, ale nie w Sequel Pro.
— Volte

działa jak urok, pełna korelacja z pytaniem na temat uruchamiania wątku i uwaga: musisz mieć Mac OS Catalina, doker 19.03, najnowsze obrazy mysql, wybranie tego polecenia $ docker run -p 3306: 3306 -d - nazwa mysql -e MYSQL_ROOT_PASSWORD = hasło mysql / mysql-server ze strony dzone.
— banzai

13

Dla osób korzystających z Docker lub Docker Compose wystąpił ten błąd, ponieważ nie ustawiłem mojej wersji obrazu MySQL. Docker automatycznie podejmie próbę uzyskania najnowszej wersji, czyli 8.

Ustawiłem MySQL na 5.7 i przebudowałem obraz, który działał normalnie:

version: '2'
services: 
  db:
   image: mysql:5.7

3
Istnieją ważne powody, aby używać wersji 8 zamiast wersji 5. Jestem na tej stronie, ponieważ chcę używać wersji 8 zamiast wersji 5
— Zach Smith

2
używając mysql:5.7zamiast mysql:latestrozwiązać problem dla mnie
— Francesco Borzi

13

Oto moja definicja bazy danych w mojej kompozycji dokującej:

dataBase:
    image: mysql:8.0
    volumes:
        - db_data:/var/lib/mysql
    networks:
        z-net:
            ipv4_address: 172.26.0.2
    restart: always
    entrypoint: ['docker-entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
    environment:
        MYSQL_ROOT_PASSWORD: supersecret
        MYSQL_DATABASE: zdb
        MYSQL_USER: zuser
        MYSQL_PASSWORD: zpass
    ports:
        - "3333:3306"

Odpowiednią linią jest punkt wejścia .

Po jego zbudowaniu i przetestowaniu możesz go przetestować za pomocą:

$ mysql -u zuser -pzpass --host=172.26.0.2  zdb -e "select 1;"
Warning: Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+

11

W przypadku systemu Windows 10 ,

  1. Zmodyfikuj my.iniplik wC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Uruchom ponownie usługę MySQL.

  3. Zaloguj się do MySQL w wierszu polecenia i wykonaj następujące polecenia w MySQL:

    • Utwórz nowego użytkownika.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Udziel wszystkich przywilejów.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Otwórz środowisko robocze MySQL i otwórz nowe połączenie przy użyciu nowych poświadczeń użytkownika.

Napotkałem ten sam problem i to zadziałało.


9

Oto rozwiązanie, które zadziałało dla mnie po instalacji MySQL 8.0 w systemie Windows 10.

Załóżmy, że nazwa użytkownika MySQL to rooti hasło toadmin

Otwórz wiersz polecenia i wprowadź następujące polecenia:

cd C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ZMIEŃ UŻYTKOWNIKA „root” @ „localhost” ZIDENTYFIKOWANY ZA POMOCĄ mysql_native_password BY „admin”


8

Jeśli pojawia się ten błąd w GitLab CI takim jak ja: po prostu zmień wersję z najnowszej na 5.7;)

# .gitlab-ci.yml

rspec:
  services:
    # - mysql:latest (I'm using latest version and it causes error)
    - mysql:5.7 #(then I've changed to this specific version and fix!)

7

znalazłem to

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

nie działało samo z siebie. Musiałem też ustawić

[mysqld]
    default_authentication_plugin=mysql_native_password

w /etc/mysql/mysql.conf.d/mysqld.cnf na Ubuntu 18.04 z uruchomionym PHP 7.0


Działa to dla mnie na Centos 7. Z jakiegoś powodu moje hasła zostały domyślnie zapisane jako caching_sha2_password i otrzymałem błąd # 1251 podczas próby zalogowania się przy pomocy phpMyAdmin.
— DaFudgeWizzad



6

Ten błąd pojawia się, gdy używane narzędzie nie jest zgodne z MySQL8, spróbuj zaktualizować do najnowszej wersji MySQL Workbench dla MySQL8


5

Prawie jak powyższe odpowiedzi, ale mogą być w prostych zapytaniach, ten błąd pojawiał się w mojej aplikacji do rozruchu wiosennego wraz z hibernacją po aktualizacji MySQL. Utworzyliśmy nowego użytkownika, uruchamiając poniższe zapytania w stosunku do naszej bazy danych. Uważam, że jest to tymczasowa metoda na używanie sha256_password zamiast najnowszego i dobrego uwierzytelniania caching_sha2_password.

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pa$$word';

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';

4

Rozwiązuje to MySQLWorkbench 8.0.11 dla macOS. Mogę nawiązać połączenie z chronioną hasłem głównym instancją mysql działającą w oknie dokowanym.


To właśnie mnie naprawiło. Korzystałem ze starszego MySQL Workbench 6.3 z serwerem 8.0. Podczas gdy wiele odpowiedzi mówi o obniżeniu kompatybilności serwera, po prostu zaktualizowałem moją wersję Workbench do najnowszej wersji 8.0 (obecnie 8.0.15).
— Suma Brak

3

Chociaż nie powinno to być prawdziwe rozwiązanie, działa lokalnie, jeśli utkniesz

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

1
To rozwiązuje problem.
— kta

2

Poniższe rozwiązanie działało dla mnie wprowadź opis zdjęcia tutaj

Przejdź do Mysql Workbench -> Serwer-> Użytkownicy i uprawnienia 1. Kliknij Dodaj konto

2. W zakładce Logowanie podaj nowe szczegóły i upewnij się, że wybierasz Standardowy typ uwierzytelniania oraz odpowiednie role administracyjne i uprawnienia do schematu

wprowadź opis zdjęcia tutaj


2

Jeśli próbujesz połączyć się z serwerem MySQL z tekstowego klienta MySQL z innego komputera (dokera, czy nie)

Większość odpowiedzi tutaj wymaga połączenia z klienta stacjonarnego lub prośby o przejście na starszą metodę uwierzytelniania. Jeśli łączysz go z klientem MySQL (tekstowym), sprawiłem, że działa z Debian Buster w kontenerze Docker.

Załóżmy, że masz skonfigurowany system apt i wget, wykonaj następujące czynności:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Pobierz pakiet Debian, który aktualizuje dla ciebie odpowiednie źródła ze strony MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debi wybierz odpowiednie opcje. W moim przypadku wystarczy tylko MySQL Tools & Connectorswłączyć.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Gotowy. Możesz teraz uruchomić nowego klienta MySQL i połączyć się z nową metodą uwierzytelniania.

To była właściwa odpowiedź na problemy z WSL, dziękuję!
— Andrew Landsverk

1

Spróbuj użyć starszego hasła podczas pobierania i instalowania MySql, co mi pomogło. Lub postępuj zgodnie z metodą opublikowaną przez Santhosha Shivana dla Mac OS.


0

Pobieranie wersji rozwojowej 8.0.11-rc działało dla mnie na komputerze Mac. za pomocą następujących poleceń dokera:

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql

-3

Rozwiązałem ten problem, instalując MySQL 5.7:

Krok 1 - Włącz repozytorium MySQL

Przede wszystkim musisz włączyć repozytorium yum społeczności MySQL 5.7 w swoim systemie. Pakiety rpm do konfiguracji repozytorium yum są dostępne na oficjalnej stronie MySQL. Użyj poniższego polecenia zgodnie z wersją systemu operacyjnego.

Na CentOS i RHEL 7

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Na CentOS i RHEL 6

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

Na Fedorze 27

dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm

Na Fedorze 26

dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm

W Fedorze 25

dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm

Krok 2 - Zainstaluj serwer MySQL 5.7

Po pomyślnym włączeniu repozytorium yum MySQL w twoim systemie. Teraz zainstaluj serwer społeczności MySQL 5.7, używając następujących poleceń zgodnie z wersją systemu operacyjnego.

Na CentOS i RHEL 7/6

yum install mysql-community-server

W Fedorze 27/26/25

 dnf install mysql-community-server

źródło: https://tecadmin.net/install-mysql-5-7-centos-rhel/


-5

Cofanie się do poprzednich instalacji (do MySQL Community Server 5.7 i Workbench 6.1) i konfigurowanie nowych poświadczeń MySQL działało dla mnie!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.