Plugin xác thực 'caching_sha2_password' không được hỗ trợ


81

Tôi đang cố gắng kết nối với máy chủ MySQL bằng trình kết nối python. Tôi đã tạo một người dùng mới lcherukuribằng plugin xác thực mysql_native_password.

Nhưng tôi có lỗi

mysql.connector.errors.NotSupportedError: Plugin xác thực 'caching_sha2_password' không được hỗ trợ

Ai đó có thể giúp tôi?

import mysql.connector

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

nhập mô tả hình ảnh ở đây



@Ben vâng. MySQL Ver 8.0.11
phani

Tôi cũng gặp sự cố này (trên Windows 10) và cuối cùng đã tìm thấy một hướng dẫn hữu ích tại: datacamp.com/community/tutorials/mysql-python Như được đề xuất ở đó, tôi đã tải xuống mysql.connector từ dev.mysql.com/downloads/connector/ python và đã thành công sau khi cài đặt này.
johnnzy

Câu trả lời:


81

Per Caching SHA-2 Pluggable Authentication

Trong MySQL 8.0, caching_sha2_passwordlà plugin xác thực mặc định chứ không phải mysql_native_password.

Bạn đang sử dụng mysql_native_password, không còn là mặc định nữa. Giả sử bạn đang sử dụng kết nối chính xác cho các phiên bản của bạn cần phải xác định các auth_plugintham số khi instantiating đối tượng kết nối của bạn

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

Từ những tài liệu tương tự:

Các connect()phương pháp hỗ trợ một auth_pluginlập luận cho rằng có thể được sử dụng để buộc sử dụng một plugin cụ thể. Ví dụ: nếu máy chủ được định cấu hình để sử dụng sha256_passwordtheo mặc định và bạn muốn kết nối với tài khoản xác thực bằng cách sử dụng mysql_native_password, hãy kết nối bằng SSL hoặc chỉ định auth_plugin='mysql_native_password'.


190

Tôi đã gặp vấn đề tương tự và việc vượt qua auth_plugin='mysql_native_password'không hoạt động, vì tôi đã vô tình cài đặt mysql-connectorthay vì mysql-connector-python(qua pip3). Chỉ để lại đây trong trường hợp nó giúp ích cho ai đó.


10
ĐIỀU ĐÓ ĐÃ GIẢI QUYẾT trong trường hợp của tôi! Cảm ơn!
MK

3
Cảm ơn! đã gỡ cài đặt my-connector & cài đặt mysql-connector-python và nó đã hoạt động!
Razikh

1
Nó cũng giải quyết được nó trong trường hợp của tôi. Tôi đã theo dõi w3schools và cài đặt mysql-connector trên pip và pip3 nhưng w3schools đã lỗi thời vào thời điểm tôi viết bài này. Cách thích hợp để thực hiện việc này là cài đặt mysql-connector-python trên pip và pip3.
w3Develops

Làm thế nào bạn nhập thư viện sau đó? nó giống như "nhập mysql-connector-python" hoặc "nhập mysql.connector". Chúng ta có thể sử dụng dấu gạch ngang của chúng ta không?
coskukoz

Tôi đã có cái này một lúc trước nên tôi không nhớ chính xác. nhưng hãy xem github.com/mysql/mysql-connector-python, nó có thể là "import mysql.connector". lưu ý rằng nếu bạn gỡ cài đặt "mysql-connector", bạn sẽ không có nguy cơ nhập sai.
ozgeneral

41

Câu hỏi này đã được trả lời ở đây và giải pháp này hoạt động.

mật khẩu sha2 caching không được hỗ trợ mysql

Chỉ cần thử lệnh này:

pip install mysql-connector-python

1
Lưu ý rằng mysql-connectorkhông được dùng nữa. Bạn nên sử dụng mysql-connector-pythonnhư được hiển thị trong câu trả lời ở trên.
Braden Holt

"pip install mysql-connector-python" giải quyết vấn đề của tôi. Cảm ơn rất nhiều.
Peter Chen

31

Không có giải pháp nào ở trên phù hợp với tôi. Tôi đã thử và rất thất vọng cho đến khi tôi xem video sau: https://www.youtube.com/watch?v=tGinfzlp0fE

pip uninstall mysql-connector hoạt động trên một số máy tính và nó có thể không hoạt động với máy tính khác.

Tôi đã làm như sau:

Trình kết nối mysql gây ra sự cố.

  1. pip uninstall mysql-connector

    Sau đây có thể không cần nhưng tôi đã loại bỏ hoàn toàn cả hai đầu nối.

  2. pip uninstall mysql-connector-python

    cài đặt lại trình kết nối mysql-conenct-python.

  3. pip install mysql-connector-python


Hoàn hảo, tôi đã làm theo câu trả lời của aupriya và ozgeneral và cả hai đều hoạt động. Nhưng tôi cũng nhận thấy lợi ích khi làm theo hướng dẫn của bạn để gỡ cài đặt hoàn toàn mysql-connector và sau đó cài đặt mysql-connector-python.
w3Develops

8

Tôi cũng gặp một lỗi tương tự

  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

Có thể bạn đã cài đặt mysql-connector thay vì mysql-connector-python. Vì vậy, bạn cần cài đặt lại nó cho python3:

pip3 install mysql-connector-python

4

Sửa đổi mã hóa Mysql

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


4

Tôi đã gặp vấn đề tương tự nhưng cách giải quyết của tôi khác vì cách này không hoàn toàn hoạt động.

Tôi tìm thấy cái này trên diễn đàn GitHub - sao chép và dán cái này vào thiết bị đầu cuối của bạn. Bạn không phải thay đổi mật khẩu của mình; nó có thể giống hệt nhau.

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

3

Bạn có thể đi tới Cài đặt-> Dự án-> Trình thông dịch dự án và tại đây cài đặt phiên bản mới nhất của gói mysql-connector-python. Trong trường hợp của tôi, đó là mysql-connector-python 8.0.15.


3

Để có một giải pháp lâu dài hơn mà không cần sử dụng mã của bạn và sửa đổi bất kỳ thứ gì cần sửa đổi: Theo tài liệu MySQL 8 , cách dễ nhất để khắc phục điều này là thêm phần sau vào tệp d MySQL của bạn -> khởi động lại máy chủ MySQL.

Điều này đã làm việc cho tôi!

Nếu cài đặt MySQL của bạn phải phục vụ các máy khách trước 8.0 và bạn gặp sự cố tương thích sau khi nâng cấp lên MySQL 8.0 trở lên, cách đơn giản nhất để giải quyết những vấn đề đó và khôi phục khả năng tương thích trước 8.0 là định cấu hình lại máy chủ để hoàn nguyên về plugin xác thực mặc định trước đó ( mysql_native_password). Ví dụ: sử dụng các dòng này trong tệp tùy chọn máy chủ:

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

3

Vui lòng cài đặt lệnh dưới đây bằng dấu nhắc lệnh.

pip install mysql-connector-python

nhập mô tả hình ảnh ở đây


3

Sử dụng pip install mysql-connector-python

Sau đó kết nối như thế này:

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

Tôi đã đối mặt với lỗi tương tự trong 2 ngày, và cuối cùng tôi đã tìm ra giải pháp. Tôi đã kiểm tra tất cả các trình kết nối được cài đặt bằng cách sử dụng pip listvà gỡ cài đặt tất cả các trình kết nối. Trong trường hợp của tôi, họ là:

  1. mysql-connector
  2. mysql-connector-python
  3. mysql-connector-python-rf

Đã gỡ cài đặt chúng bằng cách sử dụng pip uninstall mysql-connectorvà cuối cùng đã tải xuống và cài đặt mysql-connector-pythontừ trang web chính thức của MySQL và nó hoạt động tốt.


2

pip3 install mysql-connector-python cũng đã giải quyết được vấn đề của tôi. Bỏ qua việc sử dụng mô-đun kết nối mysql.


1
  1. Cài đặt trình kết nối mysql bằng lệnh dưới đây.

    pip install mysql-connector-python-rf

  2. Sử dụng lệnh để thiết lập các đặc quyền.

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

  3. Sử dụng lệnh python để kết nối với cơ sở dữ liệu mysql

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


1

Đối với những người không thể làm việc vì họ đã cài đặt mysql-connector trước, tôi đã làm như sau:

1. Đầu tiên trên CMD đi đến đường dẫn 'pip'

2. Sử dụng lệnh 'danh sách pip'

3. Sẽ có ba gói được cài đặt là sáu, protobuf và mysql-connector

4. gỡ cài đặt từng người trong số chúng một cách riêng biệt

5.Bây giờ mới cài đặt mô-đun mysql-connector-python

Điều này đã làm việc cho tôi


0

Tôi cũng gặp phải vấn đề tương tự. Vấn đề của tôi là tôi đã vô tình cài đặt sai phiên bản trình kết nối. Xóa phiên bản hiện đã cài đặt khỏi hệ thống tệp của bạn (đường dẫn của tôi trông giống như sau: C: \ Program Files \ Python36 \ Lib \ site-package) và sau đó thực thi "pip install mysql-connector-python". Điều này sẽ giải quyết vấn đề của bạn


0

tôi cố gắng giải quyết lỗi này và cuối cùng cài đặt PyMySQL thay vì thư viện mysql và nó hoạt động bình thường.

cảm ơn.


0

Nếu bạn đang tìm giải pháp cho lỗi sau

LỖI: Không thể cài đặt các gói do Lỗi Môi trường: [WinError 5] Các lỗi bị từ chối: 'D: \ softwares \ spider \ Lib \ site-Package \ libmysql.dll' Hãy xem xét sử dụng --usertùy chọn hoặc kiểm tra các quyền.

Giải pháp: Bạn nên thêm --usernếu bạn tìm thấy lỗi bị từ chối truy cập.

 pip install --user mysql-connector-python

dán lệnh này vào cmd và giải quyết vấn đề của bạn


0

Tôi đã gặp một lỗi gần như giống hệt nhau:

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

Giải pháp cho tôi rất đơn giản:

Tín dụng tên người dùng / mật khẩu db của tôi không chính xác. Lỗi không được mô tả về vấn đề, vì vậy tôi nghĩ tôi sẽ chia sẻ điều này trong trường hợp ai đó gặp phải vấn đề này.


0

Tôi đã gỡ cài đặt mysql-connector (tôi đã cài đặt sau hướng dẫn trên w3schools tutorial) và cài đặt mysql-connector-python thay thế. Nó đã làm việc.


0

Khi sử dụng MySql 8, tôi gặp lỗi tương tự khi kết nối mã của mình với DB, sử dụng pip install mysql-connector-python đã giải quyết được lỗi này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.