python - Плагин аутентификации caching_sha2_password не поддерживается




mysql (6)

Я пытаюсь подключиться к серверу MySQL с разъемом Python. Я создал нового пользователя lcherukuri с помощью плагина аутентификации mysql_native_password .

Но я получил ошибку

mysql.connector.errors.NotSupportedError: Плагин аутентификации caching_sha2_password не поддерживается

Кто-нибудь может мне помочь?

import mysql.connector

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


Вы можете перейти в Настройки-> Проект-> Проект Интерпретатор и здесь установить последнюю версию пакета mysql-connector-python. В моем случае это был mysql-connector-python 8.0.15.


Изменить шифрование Mysql

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


Ни одно из вышеуказанных решений не работает для меня. Я пытался и очень расстроился, пока не посмотрел следующее видео: https://www.youtube.com/watch?v=tGinfzlp0fE

«pip uninstall mysql-connector» работает на одном компьютере и может не работать на другом компьютере.

Я сделал следующее:

MySQL-коннектор вызывает проблемы.

  1. pip удалить MySQL-коннектор

    Следующее может не понадобиться, но я полностью удалил оба разъема.

  2. pip uninstall mysql-connector-python

    переустановите соединитель mysql-conenct-pyhton.

  3. pip install mysql-connector-python


С кэшируемой аутентификацией SHA-2

В MySQL 8.0 caching_sha2_password является плагином аутентификации по умолчанию, а не mysql_native_password .

Вы используете mysql_native_password , который больше не используется по умолчанию. Предполагая, что вы используете правильный соединитель для своей версии, вам нужно указать аргумент auth_plugin при auth_plugin экземпляра вашего объекта соединения

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

Из тех же документов:

Метод connect() поддерживает аргумент auth_plugin который можно использовать для принудительного использования определенного плагина. Например, если сервер настроен на использование sha256_password по умолчанию и вы хотите подключиться к учетной записи, которая аутентифицируется с помощью mysql_native_password , либо подключитесь с использованием SSL, либо укажите auth_plugin='mysql_native_password' .


У меня была та же самая проблема, но мое решение было другим, потому что это не полностью работало.

Я нашел это на форуме GitHub - скопируйте и вставьте это в свой терминал. Вам не нужно менять свой пароль; это может быть точно так же.

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

Я пытаюсь устранить эту ошибку и, наконец, установить PyMySQL вместо библиотеки MySQL, и она работает правильно.

Благодарю.





mysql