Das Authentifizierungs-Plugin 'caching_sha2_password' wird nicht unterstützt

80

Ich versuche, eine Verbindung zu einem MySQL-Server mit Python-Connector herzustellen. Ich habe lcherukurimit dem Authentifizierungs-Plugin einen neuen Benutzer erstellt mysql_native_password.

Aber ich habe den Fehler bekommen

mysql.connector.errors.NotSupportedError: Das Authentifizierungs-Plugin 'caching_sha2_password' wird nicht unterstützt

Kann mir jemand helfen?

import mysql.connector

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

Geben Sie hier die Bildbeschreibung ein

Phani
quelle
@ Ben ja. MySQL Ver 8.0.11
Phani
Ich hatte auch dieses Problem (unter Windows 10) und fand schließlich ein nützliches Tutorial unter: datacamp.com/community/tutorials/mysql-python Wie dort vorgeschlagen, habe ich mysql.connector von dev.mysql.com/downloads/connector/ heruntergeladen. Python und hatte Erfolg nach der Installation.
Johnnzy

Antworten:

80

Per Caching SHA-2 Pluggable Authentication

In MySQL 8.0 caching_sha2_passwordist das Standard-Authentifizierungs-Plugin eher als mysql_native_password.

Sie verwenden mysql_native_password, was nicht mehr die Standardeinstellung ist. Angenommen, Sie verwenden den richtigen Connector für Ihre Version , müssen Sie das auth_pluginArgument angeben , wenn Sie Ihr Verbindungsobjekt instanziieren

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

Aus denselben Dokumenten:

Die connect()Methode unterstützt ein auth_pluginArgument, mit dem die Verwendung eines bestimmten Plugins erzwungen werden kann. Wenn der Server beispielsweise sha256_passwordstandardmäßig für die Verwendung konfiguriert ist und Sie eine Verbindung zu einem Konto herstellen möchten, das sich mit authentifiziert mysql_native_password, können Sie entweder eine Verbindung über SSL herstellen oder angeben auth_plugin='mysql_native_password'.

Ben
quelle
189

Ich hatte das gleiche Problem und das Übergeben auth_plugin='mysql_native_password'funktionierte nicht, weil ich versehentlich mysql-connectorstatt mysql-connector-python(über pip3) installiert habe. Lassen Sie dies einfach hier, falls es jemandem hilft.

ozgeneral
quelle
10
Das hat es in meinem Fall gelöst! Vielen Dank!
MK
3
Vielen Dank! my-connector deinstalliert und mysql-connector-python installiert und es hat funktioniert!
Razikh
1
Es hat es auch in meinem Fall gelöst. Ich bin w3schools gefolgt und habe mysql-connector auf pip und pip3 installiert, aber w3schools ist zum Zeitpunkt des Schreibens veraltet. Der richtige Weg, dies zu tun, ist die Installation von mysql-connector-python auf pip und pip3.
w3Develops
Wie haben Sie die Bibliothek dann importiert? ist es wie "mysql-connector-python importieren" oder "mysql.connector importieren". Sollen wir unseren Punkt streichen?
coskukoz
Ich hatte das vor einer Weile, also erinnere ich mich nicht genau. Aber wenn Sie sich github.com/mysql/mysql-connector-python ansehen , ist es wahrscheinlich "mysql.connector importieren". Beachten Sie, dass Sie bei der Deinstallation von "mysql-connector" nicht das Risiko haben, das Falsche zu importieren.
ozgeneral
41

Diese Frage ist hier bereits beantwortet und diese Lösung funktioniert.

Das Zwischenspeichern des sha2-Passworts wird von MySQL nicht unterstützt

Versuchen Sie einfach diesen Befehl:

pip install mysql-connector-python
Anupriya Jaju
quelle
1
Beachten Sie, dass dies mysql-connectorveraltet ist. Sie sollten mysql-connector-pythonwie in der obigen Antwort gezeigt verwenden.
Braden Holt
"pip install mysql-connector-python" löst mein Problem. Danke vielmals.
Peter Chen
30

Keine der oben genannten Lösungen funktioniert für mich. Ich habe es versucht und war sehr frustriert, bis ich das folgende Video gesehen habe: https://www.youtube.com/watch?v=tGinfzlp0fE

pip uninstall mysql-connector Arbeiten Sie auf einem Computer und es funktioniert möglicherweise nicht auf einem anderen Computer.

Ich habe folgendes gemacht:

Der MySQL-Connector verursacht ein Problem.

  1. pip uninstall mysql-connector

    Folgendes wird möglicherweise nicht benötigt, aber ich habe beide Stecker vollständig entfernt.

  2. pip uninstall mysql-connector-python

    Installieren Sie den mysql-conenct-python-Connector erneut.

  3. pip install mysql-connector-python

Peter Chen
quelle
Perfekt, ich folgte den Antworten von Aupriya und Ozgeneral und beide arbeiteten. Ich finde es aber auch vorteilhaft, Ihren Anweisungen zu folgen, um mysql-connector vollständig zu deinstallieren und dann mysql-connector-python zu installieren.
w3Develops
8

Ich habe auch einen ähnlichen Fehler bekommen

  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

Sie haben wahrscheinlich mysql-connector anstelle von mysql-connector-python installiert. Sie müssen es also erneut für python3 installieren:

pip3 install mysql-connector-python
WinHtut
quelle
4

Ändern Sie die MySQL-Verschlüsselung

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

Kaustuv
quelle
4

Ich hatte das gleiche Problem, aber meine Lösung war anders, weil dies nicht vollständig funktionierte.

Ich habe dies in einem GitHub-Forum gefunden - kopiere es und füge es in dein Terminal ein. Sie müssen Ihr Passwort nicht ändern. es kann genau das gleiche sein.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{NewPassword}';
Kori Vernon
quelle
3

Sie können zu Einstellungen-> Projekt-> Projektinterpreter gehen und hier die neueste Version des Pakets mysql-connector-python installieren. In meinem Fall war es MySQL-Connector-Python 8.0.15.

PacuS
quelle
3

Um eine dauerhaftere Lösung zu erhalten, ohne Ihren Code durchzugehen und zu ändern, was geändert werden muss: Gemäß der MySQL 8-Dokumentation können Sie dies am einfachsten beheben, indem Sie Ihrer MySQL d-Datei Folgendes hinzufügen -> MySQL-Server neu starten.

Das hat bei mir funktioniert!

Wenn Ihre MySQL-Installation Clients vor 8.0 bedienen muss und nach dem Upgrade auf MySQL 8.0 oder höher Kompatibilitätsprobleme auftreten, können Sie diese Probleme am einfachsten beheben und die Kompatibilität vor 8.0 wiederherstellen, indem Sie den Server so konfigurieren, dass er zum vorherigen Standardauthentifizierungs-Plugin zurückkehrt ( mysql_native_password). Verwenden Sie beispielsweise diese Zeilen in der Serveroptionsdatei:

[mysqld]
#add the following file to your MySQLd file
    default_authentication_plugin=mysql_native_password
FlyingZebra1
quelle
3

Bitte installieren Sie den folgenden Befehl über die Eingabeaufforderung.

pip install mysql-connector-python

Geben Sie hier die Bildbeschreibung ein

Vishal
quelle
3

Verwenden pip install mysql-connector-python

Dann verbinden Sie sich wie folgt:

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.
quelle
2

Ich hatte 2 Tage lang den gleichen Fehler, dann fand ich endlich eine Lösung. Ich habe alle installierten Konnektoren mit pip listallen Konnektoren überprüft und deinstalliert. In meinem Fall waren sie:

  1. MySQL-Anschluss
  2. MySQL-Connector-Python
  3. mysql-connector-python-rf

Deinstalliert sie mit pip uninstall mysql-connectorund schließlich heruntergeladen und installiert mysql-connector-pythonvon der offiziellen MySQL-Website und es funktioniert gut.

Pratika
quelle
2

pip3 install mysql-connector-python hat auch mein Problem gelöst. Ignorieren Sie die Verwendung des MySQL-Connector-Moduls.

TF Tan
quelle
1
  1. Installieren Sie den MySQL-Connector mit dem folgenden Befehl.

    pip install mysql-connector-python-rf

  2. Verwenden Sie den Befehl, um die Berechtigungen festzulegen.

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

  3. Verwenden Sie den Python-Befehl, um eine Verbindung zur MySQL-Datenbank herzustellen

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

Saravanan Selvamohan
quelle
1

Für diejenigen, die nicht trainieren konnten, weil sie zuerst den MySQL-Connector installiert haben, habe ich Folgendes getan:

1. Gehen Sie zuerst auf CMD zum Pfad von 'pip'

2.Verwenden Sie den Befehl 'pip list'

3. Es würden drei Pakete installiert, nämlich sechs, protobuf und mysql-connector

4.Deinstallieren Sie jedes einzeln

5. Installieren Sie jetzt das MySQL-Connector-Python-Modul neu

Das hat bei mir geklappt

Ranbeer Malhotra
quelle
0

Ich bin auch auf das gleiche Problem gestoßen. Mein Problem war, dass ich versehentlich die falsche Connector-Version installiert habe. Löschen Sie Ihre aktuell installierte Version aus Ihrem Dateisystem (mein Pfad sieht folgendermaßen aus: C: \ Programme \ Python36 \ Lib \ site-packages) und führen Sie dann "pip install mysql-connector-python" aus. Dies sollte Ihr Problem lösen

coding_tim
quelle
0

Ich versuche, diesen Fehler zu beheben und schließlich PyMySQL anstelle der MySQL-Bibliothek zu installieren, und es funktioniert ordnungsgemäß.

Vielen Dank.

Manouchehr Rasouli
quelle
0

Wenn Sie nach der Lösung des folgenden Fehlers suchen

FEHLER: Pakete konnten aufgrund eines Umgebungsfehlers nicht installiert werden: [WinError 5] Der Zugriff wird verweigert: 'D: \ Software \ Spider \ Lib \ Site-Pakete \ libmysql.dll' Erwägen Sie die Verwendung von --user Option oder überprüfen Sie die Berechtigungen.

Die Lösung: Sie sollten hinzufügen, --userwenn Sie einen Fehler finden, dem der Zugriff verweigert wurde.

 pip install --user mysql-connector-python

Fügen Sie diesen Befehl in cmd ein und lösen Sie Ihr Problem

Farrukh
quelle
0

Ich hatte einen fast identischen Fehler:

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

Die Lösung war für mich einfach:

Mein Datenbank-Benutzername / Passwort war falsch. Der Fehler war nicht beschreibend für das Problem, daher dachte ich, ich würde dies teilen, falls jemand anderes darauf stößt.

Spitze Chinzmeyer
quelle
0

Ich habe mysql-connector deinstalliert (ich habe das folgende Tutorial im w3schools-Tutorial installiert) und stattdessen mysql-connector-python installiert. Es funktionierte.

Oleko Dundich
quelle
0

Bei Verwendung von MySql 8 wurde beim Verbinden meines Codes mit der Datenbank der gleiche Fehler angezeigt. Bei Verwendung der Pip-Installation mysql-connector-python wurde dieser Fehler behoben.

simomedx
quelle