Плагін автентифікації 'caching_sha2_password' не підтримується


89

Я намагаюся підключитися до сервера 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()

введіть тут опис зображення



@Ben так. MySQL Ver 8.0.11
Phani

У мене також була ця проблема (в Windows 10), і врешті-решт я знайшов корисний підручник за адресою: datacamp.com/community/tutorials/mysql-python Як я пропонував там, я завантажив mysql.connector з dev.mysql.com/downloads/connector/ python і мав успіх після встановлення цього.
johnnzy

Відповіді:


87

За кешуванням підключається аутентифікація SHA-2

У MySQL 8.0 caching_sha2_passwordце плагін автентифікації за замовчуванням, а не 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')

З тих самих документів:

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


205

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


11
ЦЕ ВИРАШИЛО в моєму випадку! Дякую!
MK

3
Дякую! видалив my-connector та встановив mysql-connector-python, і це спрацювало!
Razikh

1
Це вирішило це і в моєму випадку. Я пішов за w3schools і встановив mysql-конектор на pip та pip3, але w3schools застарів на момент написання цього. Правильний спосіб зробити це - встановити mysql-connector-python на pip та pip3.
w3Розвивається

Як ви тоді імпортували бібліотеку? це як "імпорт mysql-конектор-python" або "імпорт mysql.connector". Чи можемо ми використовувати тире нашу крапку?
coskukoz

У мене це було деякий час тому, тому я точно не пам'ятаю. але, подивившись github.com/mysql/mysql-connector-python , можливо, це "імпорт mysql.connector". зауважте, що якщо ви видалите "mysql-конектор", ви не ризикуєте імпортувати неправильну річ.
ozgeneral

42

Тут вже дано відповіді на це питання, і це рішення працює.

кешування пароля sha2 не підтримується mysql

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

pip install mysql-connector-python

1
Зверніть увагу, що mysql-connectorзастаріле. Ви повинні використовувати, mysql-connector-pythonяк показано у відповіді вище.
Брейден Холт,

"pip install mysql-connector-python" вирішить мою проблему. Дуже дякую.
Пітер Чен,

33

Жодне з наведеного вище рішення не працює для мене. Я намагався і був дуже розчарований, поки не подивився таке відео: 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


Прекрасно, я дотримувався відповідей aupriya та ozgeneral, і вони обидва працювали. Але я також знаходжу вигоду, слідуючи вашим інструкціям, щоб повністю видалити mysql-connector, а потім встановити mysql-connector-python.
w3Розвивається

Ваше рішення допомогло :), оскільки я перейшов з mysql 5.7 на mysql 8.0, і мені довелося переінсталювати, mysql-connector-pythonщоб вирішити проблему
Ahtisham

9

Я також отримав подібну помилку

  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-конектор замість mysql-connector-python. Тому вам потрібно встановити його знову для python3:

pip3 install mysql-connector-python

4

Змінити шифрування Mysql

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


4

У мене була така сама проблема, але моє вирішення було іншим, оскільки це не спрацювало повністю.

Я знайшов це на форумі GitHub - скопіюйте та вставте у свій термінал. Вам не потрібно міняти пароль; це може бути абсолютно однаковим.

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

3

Ви можете зайти в Налаштування-> Проект-> Інтерпретатор проектів і тут встановити останню версію пакета mysql-connector-python. У моєму випадку це був mysql-connector-python 8.0.15.


3

Щоб отримати більш постійне рішення, не переглядаючи ваш код і не змінюючи те, що потрібно модифікувати: За документацією MySQL 8 найпростіший спосіб виправити це - додати наступне у свій файл MySQL d -> перезапустити сервер 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

3

Будь ласка, встановіть команду нижче за допомогою командного рядка.

pip install mysql-connector-python

введіть тут опис зображення


3

Використовуйте 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',

)

2

Я стикався з тією ж помилкою протягом 2 днів, а потім нарешті знайшов рішення. Я перевірив наявність усіх встановлених роз’ємів, які використовували pip listта видалив усі роз’єми. У моєму випадку це були:

  1. mysql-з'єднувач
  2. mysql-з'єднувач-python
  3. mysql-конектор-python-rf

Видалив їх за допомогою, pip uninstall mysql-connectorнарешті, завантажив та встановив mysql-connector-pythonз офіційного веб-сайту MySQL, і це працює добре.


2

pip3 install mysql-connector-python теж вирішив мою проблему. Ігнорувати за допомогою модуля MySQL-Connector.


2

Для тих, хто не міг працювати, оскільки спочатку встановив mysql-конектор, я зробив наступне:

1. Спочатку на CMD перейдіть до шляху "піп"

2. Використовуйте команду 'pip list'

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

4. Видаліть кожен з них окремо

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

Це в мене вийшло


1
  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')


0

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


0

я намагаюся усунути цю помилку і нарешті встановити PyMySQL замість бібліотеки mysql, і вона працює належним чином.

Дякую.


0

Якщо ви шукаєте рішення наступної помилки

ПОМИЛКА: Не вдалося встановити пакети через помилку EnvironmentError: [WinError 5] У доступі відмовлено: 'D: \ softwares \ spider \ Lib \ site-пакети \ libmysql.dll' Розгляньте можливість використання --userопції або перевірте дозволи.

Рішення: Ви повинні додати, --userякщо виявите помилку, відмовлену в доступі.

 pip install --user mysql-connector-python

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


0

У мене була майже однакова помилка:

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

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

Мої дані для імені користувача / пароля db були неправильними. Помилка не описувала проблему, тому я думав, що поділюсь цим, якщо хтось інший зіткнеться з цим.


0

Я видалив mysql-конектор (я встановив наступний підручник у підручнику w3schools) і замість цього встановив mysql-connector-python. Це спрацювало.


0

Використовуючи MySql 8, я отримав ту саму помилку при підключенні коду до БД, за допомогою pip install mysql-connector-python вирішив цю помилку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.