python mysql

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



mysql (9)

Estoy tratando de conectarme a un servidor MySQL con conector python. lcherukuri un nuevo usuario lcherukuri con 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()



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

Gracias.


Me encontré con el mismo problema también. Mi problema fue que accidentalmente instalé la versión incorrecta del conector. 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


Modificar el cifrado Mysql

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


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

"pip uninstall mysql-connector" funciona en algunas computadoras y puede que no funcione con otras computadoras.

Hice lo siguiente:

El conector mysql causa problemas.

  1. pip desinstalar mysql-connector

    Puede que no necesite lo siguiente pero quité ambos conectores completamente.

  2. pip desinstalar mysql-connector-python

    reinstale el conector mysql-conenct-pyhton.

  3. pip instalar mysql-connector-python


Por caché SHA-2 autenticación conectable

En MySQL 8.0, caching_sha2_password es 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 argumento auth_plugin 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 método connect() admite un argumento auth_plugin que se puede usar para forzar el uso de un complemento en particular. Por ejemplo, si el servidor está configurado para usar sha256_password de manera predeterminada y desea conectarse a una cuenta que se autentique usando mysql_native_password , conéctese usando SSL o especifique auth_plugin=''mysql_native_password'' .


Puede ir a Configuración-> Proyecto-> Intérprete del proyecto y aquí instalar la última versión del paquete mysql-connector-python. En mi caso fue mysql-connector-python 8.0.15.


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


Tuve este mismo problema pero mi resolución fue diferente porque no funcionó completamente.

Encontré esto en un foro de GitHub: copia y pega esto en tu terminal. No tienes que cambiar tu contraseña; Puede ser exactamente el mismo.

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