Плагин аутентификации 'caching_sha2_password' не поддерживается - программирование
Подтвердить что ты не робот

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

Я пытаюсь подключиться к серверу 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()

enter image description here

4b9b3361

Ответ 1

За кэширование аутентификации 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'.

Ответ 2

У меня была та же проблема, и передача auth_plugin='mysql_native_password' не работала, потому что я случайно установил mysql-connector вместо mysql-connector-python (через pip3). Просто оставьте это здесь на случай, если это кому-то поможет.

Ответ 4

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

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

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

MySQL-соединитель вызывает проблемы.

  1. pip uninstall mysql-connector

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

  2. pip uninstall mysql-connector-python

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

  3. pip install mysql-connector-python

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

Я столкнулся с той же проблемой. Моя проблема заключалась в том, что я случайно установил неправильную версию разъема. Удалите текущую установленную версию из файловой системы (мой путь выглядит следующим образом: C:\Program Files\Python36\Lib\site-packages) и затем выполните "pip install mysql-connector-python". Это должно решить вашу проблему

Ответ 9

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

Благодарю.