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



@ 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'.


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.


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


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


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

4

Ändern Sie die MySQL-Verschlüsselung

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


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}';

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.


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

3

Bitte installieren Sie den folgenden Befehl über die Eingabeaufforderung.

pip install mysql-connector-python

Geben Sie hier die Bildbeschreibung ein


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',

)

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.


2

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


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')


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


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


0

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

Vielen Dank.


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


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.


0

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.