我试图让我的python程序将数据插入mysql,我遵循了一个指南,但是我不断得到下面的错误。
不支持身份验证插件“{0}”。格式(插件名称))mysql.connector.errors.notsupportederror:不支持身份验证插件“缓存\u sha2\u密码”
我是否错过了mysql服务器中的一个设置,或者python还不支持这个设置?
我想我可以只改变密码类型,但mysql不想让我出于某种原因,所有用户与缓存sha2\u密码不能被更改,当我创建一个新的用户,并选择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条答案
按热度按时间nkkqxpd91#
安装python3的驱动器。
python3 -m pip install mysql-connector-python
为制造商在系统上预装的默认python安装驱动器。xggvc2p62#
我得到了完全相同的问题,并试图用pip更新mysql连接器模块,正如接受的答案中所建议的那样,但是这没有帮助。我意识到这个问题可能与我的anaconda环境有关,因此我尝试使用conda更新mysql连接器python模块。
最后,我使用以下命令解决了此问题:
这似乎是皮普做不到的,至少在我的情况下。conda包的链接是:https://anaconda.org/anaconda/mysql-connector-python
f87krz0w3#
我设法解决了这个问题。最后,我在anaconda中使用了一个python版本,它不会安装python连接器的8.0.11版本,我设法在我的vanillar python 3.6.5上安装了8.0.11,使用windows powershell(以管理员权限)和
pip install MySQL-connector-python
(我想我还得把pip从9更新到10。8hhllhi24#
似乎这个包适合我:sudo pip install mysql connector python
ehxuflar5#
我也有同样的问题
不支持身份验证插件“{0}”。格式(插件名称))mysql.connector.errors.notsupportederror:不支持身份验证插件“缓存\u sha2\u密码”
这是因为python连接器不支持身份验证插件
caching_sha2_password
你需要更新它。我通过从mysql官方网站安装正确的python连接器来修复它。请务必根据您的操作系统、mysql版本和python版本下载正确的连接器。xvw2m8pv6#
mysql 8.0制作
caching_sha2_password
新帐户的默认身份验证,需要更新的连接器才能使用它。或者,您可以将帐户更改为使用本机auth方法(但这不太安全)。tyg4sfes7#
刚才遇到了同样的问题,尝试了上面所有的答案(没有一个有效)。
根据mysql 8文档,最简单的解决方法是将以下内容添加到mysql d文件->重新启动mysql服务器。这对我有用!
如果您的mysql安装必须服务于8.0之前的客户端,并且在升级到mysql 8.0或更高版本后遇到兼容性问题,那么解决这些问题并恢复8.0之前兼容性的最简单方法是重新配置服务器以恢复到以前的默认身份验证插件(mysql\u native\u password)。例如,在服务器选项文件中使用以下行: