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.