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

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

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

mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

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

import mysql.connector

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

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

MySQL 8.x?
Ben 28.05.2018 00:56

@ Бен, да. MySQL версии 8.0.11

phani 28.05.2018 00:58

У меня также была эта проблема (в Windows 10), и в конце концов я нашел полезное руководство по адресу: datacamp.com/community/tutorials/mysql-python Как было предложено там, я загрузил mysql.connector из dev.mysql.com/downloads/connector/python и успешно установил его.

johnnzy 06.09.2019 05:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
102
3
131 873
22
Перейти к ответу Данный вопрос помечен как решенный

Ответы 22

Ответ принят как подходящий

За Кэширование подключаемой аутентификации SHA-2

In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password.

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

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

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

The connect() method supports an auth_plugin argument that can be used to force use of a particular plugin. For example, if the server is configured to use sha256_password by default and you want to connect to an account that authenticates using mysql_native_password, either connect using SSL or specify auth_plugin='mysql_native_password'.

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

ЭТО РЕШИТЬ В моем случае! Спасибо!

M.K 19.02.2019 09:25

Спасибо! удалил my-connector и установил mysql-connector-python, и это сработало!

Razikh 19.08.2019 23:07

Он решил это и в моем случае. Я следил за w3schools и установил mysql-connector на pip и pip3, но w3schools уже устарел на момент написания этой статьи. Правильный способ сделать это - установить mysql-connector-python на pip и pip3.

w3Develops 05.09.2019 19:22

Как тогда вы импортировали библиотеку? это как «импорт mysql-connector-python» или «импорт mysql.connector». Могли бы мы использовать точку?

coskukoz 05.05.2020 19:41

У меня было это некоторое время назад, поэтому я точно не помню. но если взглянуть на github.com/mysql/mysql-connector-python, это, вероятно, «import mysql.connector». обратите внимание, что если вы удалите "mysql-connector", у вас не будет риска импортировать не то.

ozgeneral 05.05.2020 19:46

Ага, не забудьте сначала удалить другой. : D

AturSams 30.01.2021 12:04

Эй, у меня была такая же проблема, и ваше решение вроде сработало, теперь оно дает эту ошибку 1045 (ниже), когда я запускаю программу. Есть идеи, почему? 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА)

su yan 14.03.2021 13:21

@suyan, может быть, на самом деле комбинация имени пользователя и пароля неверна?

ozgeneral 14.03.2021 18:32

О чувак!! это спасает мне жизнь

Coder 27.05.2021 22:41

На этот вопрос здесь уже дан ответ, и это решение работает.

кеширование пароля sha2 не поддерживается mysql

Просто попробуйте эту команду:

pip install mysql-connector-python

Обратите внимание, что mysql-connector устарел. Вы должны использовать mysql-connector-python, как показано в ответе выше.

Braden Holt 11.06.2019 19:15

"pip install mysql-connector-python" решает мою проблему. Большое спасибо.

Peter Chen 20.03.2020 22:17

У меня была такая же проблема, и решение, приведенное выше, вроде сработало, теперь оно дает эту ошибку 1045 (ниже), когда я запускаю программу. Есть идеи, почему? 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА)

su yan 14.03.2021 13:23

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

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

Ни одно из вышеперечисленных решений не работает для меня. Я пытался и очень расстраивался, пока не посмотрел следующее видео: https://thewikihow.com/video_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

Отлично, я следил за ответами aupriya и ozgeneral, и они оба работали. Но я также считаю полезным следовать вашим инструкциям, чтобы полностью удалить mysql-connector, а затем установить mysql-connector-python.

w3Develops 05.09.2019 19:28

Ваше решение помогло :), так как я обновился с mysql 5.7 до mysql 8.0, и мне пришлось переустановить mysql-connector-python, чтобы решить проблему

Ahtisham 04.12.2020 11:48

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

ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY '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 и он работает правильно.

Благодарю.

Если вы ищете решение следующей ошибки

ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Acces s is denied: 'D:\softwares\spider\Lib\site-packages\libmysql.dll' Consider using the --user option or check the permissions.

Решение: Вам следует добавить --user, если вы обнаружите ошибку отказа в доступе.

 pip install --user mysql-connector-python

вставьте эту команду в cmd и решите свою проблему

Чтобы иметь более постоянное решение, не просматривая ваш код и не изменяя то, что нужно изменить: Согласно Документация MySQL 8, самый простой способ исправить это - добавить следующее в ваш d-файл MySQL -> перезапустить сервер MySQL.

Это сработало для меня!

Если ваша установка MySQL должна обслуживать клиентов до версии 8.0 и вы столкнулись с проблемами совместимости после обновления до MySQL 8.0 или выше, самый простой способ решить эти проблемы и восстановить совместимость до версии 8.0 - это перенастроить сервер для возврата к предыдущему плагину аутентификации по умолчанию ( mysql_native_password). Например, используйте эти строки в файле опций сервера:

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

Пожалуйста, установите приведенную ниже команду с помощью командной строки.

pip install mysql-connector-python

У меня была почти такая же ошибка:

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

Решение для меня было простым:

Мое имя пользователя / пароль в базе данных были неверными. Ошибка не описывала проблему, поэтому я подумал, что поделюсь ею, если кто-то еще столкнется с ней.

Я удалил mysql-connector (я установил следующее руководство по w3schools tutorial) и вместо этого установил mysql-connector-python. Это сработало.

Я столкнулся с одной и той же ошибкой в ​​течение 2 дней, затем, наконец, я нашел решение. Я проверил все установленные разъемы с помощью pip list и удалил все разъемы. В моем случае это были:

  1. mysql-коннектор
  2. MySQL-коннектор-Python
  3. MySQL-коннектор-Python-RF

Удалил их с помощью pip uninstall mysql-connector и, наконец, загрузил и установил mysql-connector-python из Официальный сайт MySQL, и он работает хорошо.

  1. Установите соединитель mysql, используя команду ниже.

    pip install mysql-connector-python-rf

  2. Используйте команду, чтобы установить привилегии.

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

  3. Используйте команду python для подключения к базе данных mysql

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

У меня тоже была похожая ошибка

  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

Вероятно, вы установили mysql-connector вместо mysql-connector-python. Поэтому вам нужно снова установить его для python3:

pip3 install mysql-connector-python

Используя MySql 8, я получил ту же ошибку при подключении моего кода к БД, используя pip install mysql-connector-python, который решил эту ошибку.

pip3 install mysql-connector-python тоже решил мою проблему. Игнорировать использование модуля mysql-connector.

Используйте pip install mysql-connector-python

Затем подключайтесь так:

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

)

Для тех, у кого не получилось, потому что они сначала установили mysql-connector, я сделал следующее:

1. Сначала на CMD перейдите по пути 'pip'

2. С помощью команды pip list

3. Было бы установлено три пакета, а именно шесть, protobuf и mysql-connector.

4.Установите каждый из них по отдельности

5. Теперь заново установите модуль mysql-connector-python.

Это сработало для меня

pip install -U mysql-connector-python, это сработало для меня, если вы уже установили mysql-connector-python, а затем следуйте https://stackoverflow.com/a/50557297/6202853 этому ответу

Другие вопросы по теме