不支持身份验证插件“ caching_sha2_password”


81

我正在尝试使用python连接器连接到MySQL服务器。我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 Ver 8.0.11
phani,

我也有这个问题(在Windows 10),并最终找到了一个有用的教程在:datacamp.com/community/tutorials/mysql-python作为建议有,我下载mysql.connector从dev.mysql.com/downloads/connector/ python,并在安装此程序后获得成功。
johnnzy

Answers:


81

每次缓存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'


189

我遇到了同样的问题,并且传递auth_plugin='mysql_native_password'不起作用,因为我不小心安装了它,mysql-connector而不是mysql-connector-python(通过pip3)安装了它。只是把它留在这里,以防有人帮忙。


10
就我而言,这解决了!谢谢!
MK

3
谢谢!卸载了my-connector并安装了mysql-connector-python并成功了!
拉齐克

1
对于我来说,它也解决了它。我按照w3schools并在pip和pip3上安装了mysql-connector,但是在我编写此书时,w3schools已经过时了。正确的方法是在pip和pip3上安装mysql-connector-python。
w3

您是如何导入该库的?是“ import mysql-connector-python”还是“ import mysql.connector”。我们可以用点破折号吗?
coskukoz

我有一阵子前,所以我不记得了。但是看看github.com/mysql/mysql-connector-python,它可能是“ import mysql.connector”。请注意,如果卸载“ mysql-connector”,则没有导入错误内容的风险。
ozgeneral

41

这里已经回答了这个问题,并且该解决方案有效。

mysql不支持缓存sha2密码

只需尝试以下命令:

pip install mysql-connector-python

1
请注意,mysql-connector已弃用。您应该使用mysql-connector-python上面的答案中所示的方法。
布雷登·霍尔特

“ pip install mysql-connector-python”解决了我的问题。非常感谢。
Peter Chen

30

上述解决方案都不适合我。在观看以下视频之前,我一直感到非常沮丧: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

8

我也有类似的错误

  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

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

使用MySQL卸载了它们pip uninstall mysql-connector,最后mysql-connector-pythonMySQL官方网站下载并安装了,效果很好。


2

pip3 install mysql-connector-python也解决了我的问题。忽略使用mysql-connector模块。


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


1

对于那些因为先安装了mysql-connector而无法工作的人,我做了以下工作:

1.首先在CMD上走'pip'之路

2.使用'点子列表'命令

3.将安装三个软件包,即六个,protobuf和mysql-connector

4,分别卸载它们

5,现在重新安装mysql-connector-python模块

这对我来说很有效


0

我也遇到了同样的问题。我的问题是,我不小心安装了错误的连接器版本。从文件系统中删除当前安装的版本(我的路径如下所示:C:\ Program Files \ Python36 \ Lib \ site-packages),然后执行“ pip install mysql-connector-python”。这应该可以解决您的问题



0

如果您正在寻找以下错误的解决方案

错误:由于环境错误而无法安装软件包:[WinError 5] Acces被拒绝:'D:\ softwares \ spider \ Lib \ site-packages \ 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

对我来说解决方案很简单:

我的数据库用户名/密码凭据不正确。该错误不是问题的描述,因此我认为如果其他人遇到此问题,我将与您分享。


0

我卸载了mysql-connector(我在w3schools教程中安装了以下教程),然后安装了mysql-connector-python。有效。


0

使用MySql 8,将代码连接到数据库时出现了相同的错误,使用pip install mysql-connector-python确实解决了该错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.