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

我试图用 python 连接器连接到一个 MySQL 服务器。我使用认证插件 mysql_native_password创建了一个新用户 lcherukuri

但是我弄错了

Error. NotSupportedError: 不支持身份验证插件“ cache _ 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

232006 次浏览

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

我有同样的问题,传递 auth_plugin='mysql_native_password'不工作,因为我不小心安装了 mysql-connector而不是 mysql-connector-python(通过 pip3)。把这个留在这里,以防有人需要。

这个问题已经在这里得到了回答,这个解决方案是有效的。

缓存 sha2密码不支持 mysql

试试这个命令:

pip install mysql-connector-python

您可以进入 Settings-> Project-> Project Interpreter,并在这里安装 mysql-connect-python 包的最新版本。在我的例子中,它是 mysql-connect-python 8.0.15。

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

以上的解决方案对我来说都不管用。我尝试了,但是非常沮丧,直到我看了下面的视频: Https://www.youtube.com/watch?v=tginfzlp0fe

pip uninstall mysql-connector在一些计算机上工作,但在其他计算机上可能不工作。

我做了以下几件事:

Mysql 连接器会导致问题。

  1. pip uninstall mysql-connector

    以下可能不需要,但我删除了两个连接器完全。

  2. pip uninstall mysql-connector-python

    重新安装 mysql-content-python 连接器。

  3. pip install mysql-connector-python

修改 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}';

使用此选项检查您的设置

select Host,User,plugin from mysql.user;

我尝试解决这个错误,并最终安装 PyMySQL而不是 mysql 库 工作正常。

谢谢。

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

错误: 由于环境错误: [ WinError 5]访问,无法安装软件包 S 被拒绝: “ D: 软件爬虫 Lib 站点-包 libmysql.dll” 考虑使用 --user选项或检查权限。

解决办法: 如果发现访问拒绝错误,应该添加 --user

 pip install --user mysql-connector-python

将此命令粘贴到 cmd 并解决您的问题

拥有一个更持久的解决方案,而不需要检查代码并修改需要修改的任何内容: 根据 MySQL 8文档,解决这个问题的最简单方法是将以下内容添加到 MySQL d 文件中-> 重新启动 MySQL 服务器。

这招对我管用!

如果您的 MySQL 安装必须服务于8.0之前的客户端,并且在升级到 MySQL 8.0或更高版本之后遇到了兼容性问题,解决这些问题并恢复8.0之前的兼容性的最简单方法是重新配置服务器以恢复到之前的默认身份验证插件(MySQL _ national _ password)。例如,在服务器选项文件中使用以下行:

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

请使用命令提示符安装以下命令。

pip install mysql-connector-python

enter image description here

我犯了一个几乎相同的错误:

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

对我来说,解决办法很简单:

我的数据库用户名/密码记录不正确。这个错误没有描述这个问题,所以我想我应该分享这个,以防其他人遇到这个问题。

我卸载了 mysql-connect (我按照 w3school 教程中的教程进行了安装) ,而是安装了 mysql-connect-python。

我面临着同样的错误2天,然后我终于找到了解决办法。我使用 pip list检查了所有已安装的连接器,并卸载了所有的连接器。就我而言,它们是:

  1. Mysql 连接器
  2. Mysql-Connector-python
  3. Mysql-Connector-python-rf

使用 pip uninstall mysql-connector卸载它们,最后从 MySQL 官方网站下载并安装了 mysql-connector-python,它工作得很好。

  1. 使用以下命令安装 mysql 连接器。

    pip install mysql-connector-python-rf

  2. 使用该命令设置特权。

    ALTER USER‘ root’@‘ localhost’IDENTIFIED WITH mysql _ national _ password BY ‘ very _ strong _ password’; 同花特权;

  3. 使用 python 命令连接到 mysql 数据库

    Mydb = mysql.Connector.connect ( Host = “ localhost”, User = “ root”, Passwd = “ very _ strong _ password”, Auth _ plugin = ‘ mysql _ nate _ 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-connect 而不是 mysql-connect-python,因此需要为 python3重新安装它:

pip3 install mysql-connector-python

在使用 MySql 8时,我在将代码连接到数据库时遇到了同样的错误,使用 pip install MySql-connect-python 解决了这个错误。

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

使用 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 连接器而无法工作的人,我做了以下工作:

1. 首先在 CMD 上转到“ pip”的路径

2. 使用“ pip list”命令

3. 安装了三个软件包,分别是六个,Protobuf 和 mysql 连接器

4. 分别卸载它们

5. 现在重新安装 mysql-connect-python 模块

这招对我管用

这对我来说 pip install -U mysql-connector-python工作,如果你已经安装了 mysql-connector-python,然后按照 https://stackoverflow.com/a/50557297/6202853这个答案

这似乎是 mysql-connect 包的一个问题。卸载并安装 mysql-connect-python 包。

sudo pip uninstall mysql-connector
sudo pip install mysql-connector-python

或者,您可以使用 mysql-Connector 包,其 auth _ plugin 变量如下所示

mysql.connector.connect(host='localhost',port="3306",user='user',password='pass',database='dbname',auth_plugin='myql_native_password')

我认为在任何一种情况下,都需要使用 mysql _ nate _ password 设置 SQL 数据库用户

alter user 'user'@'localhost' identified with mysql_native_password by 'password';

我意识到我安装的是 mysql-connect 而不是 mysql-connect-python,所以在终端中运行这些命令

pip3 uninstall mysql-connector
pip3 install mysql-connector-python

这对我有效:

pip install cryptography

它在 MySQL服务器版本 8.0中失败,但在 5.7.33版本中可以正常工作
解决方案是使用 MySQL版本 5.7.33

如果你正在寻找连接网址或连接字符串与正确的插件; 然后下面的工作为我


url = 'mysql+mysqlconnector://%s:%s@%s:%s/%s?auth_plugin=mysql_native_password' % (settings['user'], settings['password'], settings['host'], settings['port'], settings['database'])


Pip install mysql-connect-python ,我希望它能工作