Wtyczka uwierzytelniająca „caching_sha2_password” nie jest obsługiwana

90

Próbuję połączyć się z serwerem MySQL za pomocą złącza Python. Utworzyłem nowego użytkownika lcherukuriz wtyczką uwierzytelniającą mysql_native_password.

Ale dostałem błąd

mysql.connector.errors.NotSupportedError: Wtyczka uwierzytelniająca „caching_sha2_password” nie jest obsługiwana

Czy ktoś może mi pomóc?

import mysql.connector

cnx = mysql.connector.connect(user='lcherukuri', password='password',
                              host='127.0.0.1',
                              database='test')
cnx.close()

wprowadź opis obrazu tutaj

phani
źródło
@Ben yes. MySQL w wersji 8.0.11
phani
Miałem też ten problem (w systemie Windows 10) i ostatecznie znalazłem przydatny samouczek pod adresem: datacamp.com/community/tutorials/mysql-python Zgodnie z sugestią, pobrałem mysql.connector z dev.mysql.com/downloads/connector/ python i odniósł sukces po zainstalowaniu tego.
johnnzy,

Odpowiedzi:

87

Wtykane uwierzytelnianie SHA-2 na buforowanie

W MySQL 8.0 caching_sha2_passwordjest domyślną wtyczką uwierzytelniającą, a nie mysql_native_password.

Używasz mysql_native_password, co nie jest już domyślne. Zakładając, że używasz poprawnej złącze dla danej wersji należy określić ten auth_pluginargument, kiedy instancji swój obiekt połączenia

cnx = mysql.connector.connect(user='lcherukuri', password='password',
                              host='127.0.0.1', database='test',
                              auth_plugin='mysql_native_password')

Z tych samych dokumentów:

connect()Sposób obsługuje auth_pluginargumentów, które mogą być wykorzystane do wymuszenia zastosowania określonego wtyczki. Na przykład, jeśli serwer jest skonfigurowany do używania sha256_passworddomyślnie i chcesz połączyć się z kontem, które uwierzytelnia się przy użyciu mysql_native_password, połącz się za pomocą SSL lub określ auth_plugin='mysql_native_password'.

Ben
źródło
207

Miałem ten sam problem i przejście auth_plugin='mysql_native_password'nie działało, bo przypadkowo zainstalowałem mysql-connectorzamiast mysql-connector-python(przez pip3). Zostawiam to tutaj na wypadek, gdyby to komuś pomogło.

ozgeneral
źródło
11
TO ROZWIĄZAŁO TO w moim przypadku! Dzięki!
MK,
3
Dzięki! odinstalowałem my-connector i zainstalowałem mysql-connector-python i zadziałało!
Razikh
1
To rozwiązało to również w moim przypadku. Śledziłem w3schools i zainstalowałem mysql-connector na pip i pip3, ale w3schools jest przestarzały w momencie, gdy to piszę. Właściwy sposób to zainstalować mysql-connector-python na pip i pip3.
w3 Rozwija się
Jak wtedy zaimportowałeś bibliotekę? czy to jak „import mysql-connector-python” czy „import mysql.connector”. Czy moglibyśmy użyć kreski naszej kropki?
coskukoz
Miałem to jakiś czas temu, więc nie pamiętam dokładnie. ale patrząc na github.com/mysql/mysql-connector-python , prawdopodobnie jest to „import mysql.connector”. zwróć uwagę, że jeśli odinstalujesz "mysql-connector", nie masz ryzyka zaimportowania niewłaściwej rzeczy.
ozgeneral
42

Na to pytanie jest już tutaj odpowiedź i to rozwiązanie działa.

buforowanie hasła sha2 nie jest obsługiwane mysql

Po prostu spróbuj tego polecenia:

pip install mysql-connector-python
Anupriya Jaju
źródło
1
Zauważ, że mysql-connectorjest to przestarzałe. Powinieneś używać, mysql-connector-pythonjak pokazano w powyższej odpowiedzi.
Braden Holt
„pip install mysql-connector-python” rozwiązuje mój problem. Wielkie dzięki.
Peter Chen
33

Żadne z powyższych rozwiązań nie działa dla mnie. Próbowałem i byłem bardzo sfrustrowany, dopóki nie obejrzałem następującego wideo: https://www.youtube.com/watch?v=tGinfzlp0fE

pip uninstall mysql-connector działa na jakimś komputerze i może nie działać na innym komputerze.

Wykonałem następujące czynności:

Problem powoduje łącznik mysql.

  1. pip uninstall mysql-connector

    Poniższe mogą nie być potrzebne, ale całkowicie usunąłem oba złącza.

  2. pip uninstall mysql-connector-python

    ponownie zainstaluj łącznik mysql-conenct-python.

  3. pip install mysql-connector-python

Peter Chen
źródło
Idealnie, zastosowałem się do odpowiedzi aupriya i ozgeneral i obaj zadziałali. Korzystam również z podążania za instrukcjami, aby całkowicie odinstalować mysql-connector, a następnie zainstalować mysql-connector-python.
w3 Rozwija się
Rozwiązanie pomogło :) ponieważ zaktualizowałem mysql 5.7 do mysql 8.0 i musiałem ponownie zainstalować, mysql-connector-pythonaby naprawić problem
Ahtisham
10

Mam też podobny błąd

  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\authentication.py", line 191, in get_auth_plugin
    "Authentication plugin '{0}' is not supported".format(plugin_name))
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

Prawdopodobnie zainstalowałeś mysql-connector zamiast mysql-connector-python. Więc musisz zainstalować go ponownie dla python3:

pip3 install mysql-connector-python
WinHtut
źródło
4

Zmodyfikuj szyfrowanie MySQL

ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Kaustuv
źródło
4

Miałem ten sam problem, ale moja rozdzielczość była inna, ponieważ to nie do końca działało.

Znalazłem to na forum GitHub - skopiuj i wklej to do swojego terminala. Nie musisz zmieniać swojego hasła; może być dokładnie to samo.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{NewPassword}';
Kori Vernon
źródło
3

Możesz przejść do Settings-> Project-> Project Interpreter i tutaj zainstalować najnowszą wersję pakietu mysql-connector-python. W moim przypadku był to mysql-connector-python 8.0.15.

PacuS
źródło
3

Aby mieć trwalsze rozwiązanie bez przechodzenia przez kod i modyfikowania tego, co wymaga modyfikacji: Zgodnie z dokumentacją MySQL 8 , najłatwiejszym sposobem naprawienia tego jest dodanie następującego pliku do pliku d MySQL -> zrestartuj serwer MySQL.

To zadziałało dla mnie!

Jeśli Twoja instalacja MySQL musi obsługiwać klientów w wersji wcześniejszej niż 8.0 i napotkasz problemy ze zgodnością po uaktualnieniu do MySQL 8.0 lub nowszej, najprostszym sposobem rozwiązania tych problemów i przywrócenia kompatybilności z wersji wcześniejszej niż 8.0 jest rekonfiguracja serwera w celu przywrócenia poprzedniej domyślnej wtyczki uwierzytelniającej ( mysql_native_password). Na przykład użyj tych wierszy w pliku opcji serwera:

[mysqld]
#add the following file to your MySQLd file
    default_authentication_plugin=mysql_native_password
FlyingZebra1
źródło
3

Zainstaluj poniższe polecenie za pomocą wiersza poleceń.

pip install mysql-connector-python

wprowadź opis obrazu tutaj

Vishal
źródło
3

Posługiwać się pip install mysql-connector-python

Następnie połącz w ten sposób:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",               #hostname
  user="Harish",                   # the user who has privilege to the db
  passwd="Harish96",               #password for user
  database="Factdb",               #database name
    auth_plugin = 'mysql_native_password',

)
Sarath Chandran K.
źródło
2

Miałem ten sam błąd przez 2 dni, po czym w końcu znalazłem rozwiązanie. Sprawdziłem wszystkie zainstalowane złącza, używając pip listi odinstalowałem wszystkie złącza. W moim przypadku były to:

  1. mysql-connector
  2. mysql-connector-python
  3. mysql-connector-python-rf

Odinstalowałem je za pomocą, pip uninstall mysql-connectora na koniec pobrałem i zainstalowałem mysql-connector-pythonz oficjalnej strony MySQL i działa dobrze.

Pratika
źródło
2

pip3 install mysql-connector-python również rozwiązał mój problem. Zignoruj ​​użycie modułu mysql-connector.

TF Tan
źródło
2

Dla tych, którzy nie mogli pracować, ponieważ najpierw zainstalowali mysql-connector, wykonałem następujące czynności:

1. najpierw na CMD przejdź do ścieżki 'pip'

2. Użyj polecenia „pip list”

3. Zostałyby zainstalowane trzy pakiety, a mianowicie sześć, protobuf i mysql-connector

4. Odinstaluj każdy z nich osobno

5. Teraz na nowo zainstaluj moduł mysql-connector-python

To mi się udało

Ranbeer Malhotra
źródło
1
  1. Zainstaluj łącznik mysql za pomocą poniższego polecenia.

    pip install mysql-connector-python-rf

  2. Użyj polecenia, aby ustawić uprawnienia.

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password'; FLUSH PRIVILEGES;

  3. Użyj polecenia python, aby połączyć się z bazą danych mysql

    mydb = mysql.connector.connect( host="localhost", user="root", passwd="very_strong_password", auth_plugin='mysql_native_password')

Saravanan Selvamohan
źródło
0

Ja też napotkałem ten sam problem. Mój problem polegał na tym, że przypadkowo zainstalowałem złą wersję złącza. Usuń aktualnie zainstalowaną wersję z systemu plików (moja ścieżka wygląda następująco: C: \ Program Files \ Python36 \ Lib \ site-packages), a następnie wykonaj polecenie „pip install mysql-connector-python”. To powinno rozwiązać twój problem

coding_tim
źródło
0

Próbuję rozwiązać ten błąd i ostatecznie zainstalować PyMySQL zamiast biblioteki mysql i działa poprawnie.

dzięki.

Manouchehr Rasouli
źródło
0

Jeśli szukasz rozwiązania następującego błędu

BŁĄD: nie można zainstalować pakietów z powodu błędu środowiskowego: [WinError 5] Odmowa dostępu: „D: \ softwares \ spider \ Lib \ site-packages \ libmysql.dll” Rozważ użycie tej --useropcji lub sprawdź uprawnienia.

Rozwiązanie: należy dodać, --userjeśli znajdziesz błąd odmowy dostępu.

 pip install --user mysql-connector-python

wklej to polecenie do cmd i rozwiąż problem

Farrukh
źródło
0

Miałem prawie identyczny błąd:

Error while connecting to MySQL: Authentication plugin 'caching_sha2_password' is not supported

Rozwiązanie dla mnie było proste:

Moje dane logowania do nazwy użytkownika / hasła bazy danych były nieprawidłowe. Błąd nie opisał problemu, więc pomyślałem, że podzielę się tym na wypadek, gdyby ktoś napotkał to.

koronkowy chinzmeyer
źródło
0

Odinstalowałem mysql-connector (zainstalowałem następujący tutorial na tutorialu w3schools) i zamiast tego zainstalowałem mysql-connector-python. Zadziałało.

Oleko Dundich
źródło
0

Używając MySql 8, otrzymałem ten sam błąd podczas podłączania mojego kodu do DB, używając pip install mysql-connector-python rozwiązało ten błąd.

simomedx
źródło