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?

Aman Aggarwal
źródło
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

Santhosh Sivan
źródło
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';
podwójnie
źródło
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.

Araz Ghazaryan
źródło
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

Aman Aggarwal
źródło
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 ).

Montecarlo
źródło
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.

axelferreira
źródło
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;
arcseldon
źródło
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.

ImtiazeA
źródło
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

Ahmed Ziyad
źródło
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
Dylan Pierce
źródło
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 |
+---+
Maximiliano de Mattos
źródło
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.

Preetham
źródł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”

Pratik Patil
źródło
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!)
Bruno Casali
źródło
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

Darrell Duane
źródło
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

Shammoo
źródło
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';
Vikky
źródło
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.

Benjamin Lin
źródło
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 '';
elad srebrny
źródło
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

Deepak rkm
źródło
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.
huggie
źródło
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.

Anupriya Krishnamoorthy
źródło
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
Daniel Adigun
źródło
-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/

Laloi
źródło
-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!

nickitalyano
źródło