El complemento de autenticación 'caching_sha2_password' no es compatible

81

Estoy tratando de conectarme a un servidor MySQL con conector Python. Creé un nuevo usuario lcherukuricon el complemento de autenticación mysql_native_password.

Pero tengo el error

mysql.connector.errors.NotSupportedError: el complemento de autenticación 'caching_sha2_password' no es compatible

¿Alguien me puede ayudar?

import mysql.connector

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

ingrese la descripción de la imagen aquí

phani
fuente
@ Ben sí. MySQL Ver 8.0.11
phani
También tuve este problema (en Windows 10), y finalmente encontré un tutorial útil en: datacamp.com/community/tutorials/mysql-python Como se sugiere allí, he descargado desde mysql.connector dev.mysql.com/downloads/connector/ python y tuvo éxito después de instalar esto.
johnnzy

Respuestas:

81

Autenticación conectable SHA-2 por caché

En MySQL 8.0, caching_sha2_passwordes el complemento de autenticación predeterminado en lugar de mysql_native_password.

Estás usando mysql_native_password, que ya no es el predeterminado. Suponiendo que está utilizando el conector correcto para su versión , debe especificar el auth_pluginargumento al crear una instancia de su objeto de conexión

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

De esos mismos documentos:

El connect()método admite un auth_pluginargumento que puede usarse para forzar el uso de un complemento en particular. Por ejemplo, si el servidor está configurado para usar sha256_passwordde forma predeterminada y desea conectarse a una cuenta que se autentica mediante mysql_native_password, conéctese mediante SSL o especifique auth_plugin='mysql_native_password'.

Ben
fuente
189

Tuve el mismo problema y el paso auth_plugin='mysql_native_password'no funcionó, porque lo instalé accidentalmente en mysql-connectorlugar de mysql-connector-python(a través de pip3). Solo dejo esto aquí en caso de que ayude a alguien.

ozgeneral
fuente
10
¡ESO LO RESUELVE en mi caso! ¡Gracias!
MK
3
¡Gracias! desinstalé my-connector e instalé mysql-connector-python y ¡funcionó!
Razikh
1
También lo resolvió en mi caso. Seguí w3schools e instalé mysql-connector en pip y pip3, pero w3schools está desactualizado en el momento en que escribo esto. La forma correcta de hacer esto es instalar mysql-connector-python en pip y pip3.
w3 Se desarrolla el
¿Cómo importaste la biblioteca entonces? es como "importar mysql-connector-python" o "importar mysql.connector". ¿Deberíamos usar guiones nuestro punto?
coskukoz
Tuve esto hace un tiempo, así que no lo recuerdo exactamente. pero echando un vistazo a github.com/mysql/mysql-connector-python probablemente sea "import mysql.connector". tenga en cuenta que si desinstala "mysql-connector", no corre el riesgo de importar algo incorrecto.
ozgeneral
41

Esta pregunta ya está respondida aquí y esta solución funciona.

el almacenamiento en caché de la contraseña sha2 no es compatible con mysql

Prueba este comando:

pip install mysql-connector-python
Anupriya Jaju
fuente
1
Tenga en cuenta que mysql-connectorestá en desuso. Debería usar mysql-connector-pythoncomo se muestra en la respuesta anterior.
Braden Holt
"pip install mysql-connector-python" resuelve mi problema. Muchas gracias.
Peter Chen
31

Ninguna de las soluciones anteriores funciona para mí. Lo intenté y muy frustrado hasta que vi el siguiente video: https://www.youtube.com/watch?v=tGinfzlp0fE

pip uninstall mysql-connector funciona en alguna computadora y es posible que no funcione en otra computadora.

Hice lo siguiente:

El conector mysql causa problemas.

  1. pip uninstall mysql-connector

    Es posible que lo siguiente no sea necesario, pero eliminé ambos conectores por completo.

  2. pip uninstall mysql-connector-python

    reinstale el conector mysql-conenct-python.

  3. pip install mysql-connector-python

Peter Chen
fuente
Perfecto, seguí las respuestas de aupriya y ozgeneral y ambos funcionaron. Pero también encuentro beneficios en seguir sus instrucciones para desinstalar mysql-connector por completo y luego instalar mysql-connector-python.
w3 Se desarrolla el
8

También tengo un error similar

  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

Probablemente haya instalado mysql-connector en lugar de mysql-connector-python. Entonces necesitas instalarlo nuevamente para python3:

pip3 install mysql-connector-python
WinHtut
fuente
4

Modificar el cifrado de Mysql

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

Kaustuv
fuente
4

Tuve el mismo problema, pero mi resolución fue diferente porque no funcionó por completo.

Encontré esto en un foro de GitHub: cópielo y péguelo en su terminal. No tiene que cambiar su contraseña; puede ser exactamente lo mismo.

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

Puede ir a Settings-> Project-> Project Interpreter y aquí instalar la última versión del paquete mysql-connector-python. En mi caso fue mysql-connector-python 8.0.15.

PacuS
fuente
3

Para tener una solución más permanente sin pasar por su código y modificar lo que necesite ser modificado: Según la documentación de MySQL 8 , la forma más fácil de solucionar esto es agregar lo siguiente a su archivo MySQL d -> reiniciar el servidor MySQL.

¡Esto funcionó para mí!

Si su instalación de MySQL debe servir a clientes anteriores a 8.0 y encuentra problemas de compatibilidad después de actualizar a MySQL 8.0 o superior, la forma más sencilla de abordar esos problemas y restaurar la compatibilidad de versiones anteriores a 8.0 es reconfigurar el servidor para volver al complemento de autenticación predeterminado anterior ( mysql_native_password). Por ejemplo, use estas líneas en el archivo de opciones del servidor:

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

Instale el siguiente comando usando el símbolo del sistema.

pip install mysql-connector-python

ingrese la descripción de la imagen aquí

Vishal
fuente
3

Utilizar pip install mysql-connector-python

Luego conecta así:

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
fuente
2

Estuve enfrentando el mismo error durante 2 días, luego finalmente encontré una solución. Verifiqué todos los conectores instalados usando pip listy desinstalé todos los conectores. En mi caso fueron:

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

Los desinstalé usando pip uninstall mysql-connectory finalmente descargué e instalé el mysql-connector-pythondel sitio web oficial de MySQL y funciona bien.

Pratika
fuente
2

pip3 install mysql-connector-python también resolvió mi problema. Ignore el uso del módulo conector mysql.

TF Tan
fuente
1
  1. Instale el conector mysql usando el siguiente comando.

    pip install mysql-connector-python-rf

  2. Utilice el comando para establecer los privilegios.

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

  3. Use el comando python para conectarse a la base de datos mysql

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

Saravanan Selvamohan
fuente
1

Para aquellos que no pudieron hacer ejercicio porque instalaron mysql-connector primero, hice lo siguiente:

1.Primero en CMD, vaya al camino de 'pip'

2.Utilice el comando 'pip list'

3.Habría tres paquetes instalados, a saber, seis, protobuf y mysql-connector

4.Desinstale cada uno de ellos por separado

5.Ahora instale nuevamente el módulo mysql-connector-python

Esto funcionó para mi

Ranbeer Malhotra
fuente
0

También me encontré con el mismo problema. Mi problema fue que instalé accidentalmente la versión del conector incorrecta. Elimine la versión instalada actualmente de su sistema de archivos (mi ruta se ve así: C: \ Archivos de programa \ Python36 \ Lib \ site-packages) y luego ejecute "pip install mysql-connector-python". Esto debería solucionar tu problema

coding_tim
fuente
0

Intento resolver este error y finalmente instalar PyMySQL lugar de la biblioteca mysql y está funcionando correctamente.

Gracias.

Manouchehr Rasouli
fuente
0

Si está buscando la solución del siguiente error

ERROR: No se pudieron instalar los paquetes debido a un EnvironmentError: [WinError 5] Acceso denegado: 'D: \ softwares \ spider \ Lib \ site-packages \ libmysql.dll' Considere usar la --useropción o verifique los permisos.

La solución: debe agregar --usersi encuentra un error de acceso denegado.

 pip install --user mysql-connector-python

pegue este comando en cmd y resuelva su problema

Farrukh
fuente
0

Tuve un error casi idéntico:

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

La solución para mí fue simple:

Mi nombre de usuario / contraseña de base de datos era incorrecto. El error no describía el problema, así que pensé en compartir esto en caso de que alguien más se encuentre con esto.

chinzmeyer de encaje
fuente
0

Desinstalé mysql-connector (instalé siguiendo el tutorial en el tutorial de w3schools) e instalé mysql-connector-python en su lugar. Funcionó.

Oleko Dundich
fuente
0

Usando MySql 8 obtuve el mismo error al conectar mi código a la base de datos, usar pip install mysql-connector-python resolvió este error.

simomedx
fuente