mysql不支持缓存sha2密码

时间:2018-05-08 23:25:29

标签: python mysql mysql-workbench

我正在尝试让我的python程序将数据插入MySQL,我按照指南操作但是我一直收到以下错误。

“不支持身份验证插件”{0}“”。format(plugin_name)) mysql.connector.errors.NotSupportedError:不支持身份验证插件'caching_sha2_password'“

我错过了mysql服务器中的设置还是python不支持这个?

我想我可以改变密码类型但是mysql不想让我出于某种原因所有使用caching_sha2_password的用户都无法更改,当我创建新用户并选择SHA256密码时我得到错误创建帐户@%密码哈希没有预期的格式。检查PASSWORD()函数是否使用了正确的密码算法。

#!/user
# -*- coding: utf-8 -*-

from __future__ import print_function
import urllib.request
import numpy as np
import mysql.connector as mysql

from datetime import date, datetime, timedelta



cnx = mysql.connect(user='root', password='password', database='powergrid')

cursor = cnx.cursor()

tomorrow = datetime.now().date() + timedelta(days=1)

idfueltype= cursor.lastrowid

add_fueltype = ("INSERT INTO fueltype"
                "(idfueltype, fueltypecol, demand)"
               "VALUES(%s, %s, %s)")

fueltype_data = (idfueltype, 'coal', 10000)

cursor.execute(add_fueltype, fueltype_data)

cnx.commit()

cursor.close()
cnx.close()

7 个答案:

答案 0 :(得分:16)

我设法解决了这个问题。最后我在Anaconda中使用了一个版本的python,它不会安装python连接器的8.0.11版本,我设法使用Windows PowerShell在我的vanilla python 3.6.5上安装8.0.11(在管理员中)特权)并使用pip install MySQL-connector-python(我想我也必须将点数从9更新到10。

答案 1 :(得分:5)

我遇到了同样的问题

  

“不支持身份验证插件'{0}'”。format(plugin_name))   mysql.connector.errors.NotSupportedError:身份验证插件   不支持'caching_sha2_password'

之所以会这样,是因为您的Python 连接器不支持身份验证插件caching_sha2_password,而您需要对其进行更新。我通过从https://docs.microsoft.com/en-us/azure/cloud-shell/persisting-shell-storage安装正确的Python连接器来修复它。请确保根据您的操作系统,使用的MySQL版本和Python版本下载正确的连接器。

答案 2 :(得分:5)

为python3安装驱动器。

python3 -m pip install mysql-connector-python

为制造商在您的系统上预先安装的默认python安装驱动器。

python -m pip install mysql-connector-python

答案 3 :(得分:1)

似乎此软件包对我有用: sudo pip安装MySQL-connector-python

答案 4 :(得分:1)

我遇到了完全相同的问题,并尝试按照接受的答案中的建议使用pip更新mysql-connector模块,但这没有帮助。我意识到问题可能与Anaconda环境有关,因此我尝试使用 conda 来更新mysql-connector-python模块。

最后,我使用以下命令解决了此问题:

conda install -c anaconda mysql-connector-python

至少在我看来,这似乎可以做点子不能做的事情。 conda软件包的链接为:https://anaconda.org/anaconda/mysql-connector-python

答案 5 :(得分:0)

MySQL 8.0使caching_sha2_password成为新帐户的默认身份验证,这需要更新的连接器才能使用它。或者,您可以更改帐户以使用本机身份验证方法(但安全性较低)。

答案 6 :(得分:0)

刚才遇到了同样的问题,并尝试了上述所有答案(无济于事)。

MySQL 8 documentation,最简单的解决方法是将以下内容添加到您的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