“sha256_password 或caching_sha2_password 需要加密”
Posted
技术标签:
【中文标题】“sha256_password 或caching_sha2_password 需要加密”【英文标题】:"cryptography is required for sha256_password or caching_sha2_password" 【发布时间】:2019-06-25 22:22:16 【问题描述】:美好的一天。希望你一切都好。有人可以帮我解决这个问题吗?
我是 mysql 环境的新手。我正在尝试远程连接到 MySQL 数据库。我使用了以下 python 代码并得到了这个错误。
Print(e) = "cryptography is required for sha256_password or
caching_sha2_password"
而且不知道如何解决这个错误。
import pymysql as db
HOST = "XXXXX.XXX.XX”
PORT = XXXX
USER = "my_username"
PASSWORD = "my_password”
DB = "db_name"
try:
connection = db.Connection(host=HOST, port=PORT,user=USER,
passwd=PASSWORD, db=DB)
dbhandler = connection.cursor()
dbhandler.execute("SELECT * from table_name")
result = dbhandler.fetchall()
for item in result:
print (DB)
except Exception as e:
print(e)
finally:
connection.close()
【问题讨论】:
【参考方案1】:import mysql.connector
def connection():
conn = mysql.connector.connect(host = "XXXXX",
user = 'XXXXX',
password = 'XXXXX',
database = 'login_page',
auth_plugin='mysql_native_password')
c = conn.cursor()
return c , conn
下载 mysql 连接器而不是 pymysql 并尝试以这种方式连接。它对我有用,希望它也对你有用。
【讨论】:
谢谢,它工作。我还需要将“auth_plugin='mysql_native_password'”部分添加到我的代码中。【参考方案2】:可以使错误消息更加全面和有用。为了修复这个“密码学”包,需要安装。
pip install cryptography
【讨论】:
谢谢。这对我有用。我觉得没有必要重新发明***。 与 pymysql 完美配合。在您可能不喜欢安装 brew 的 macOS 上解决问题。 任何人在安装加密时遇到 RUST 错误尝试升级 pip 这应该是公认的答案。完美运行 如果你是用 jupyter notebook 做的,安装这个包后记得重启你的 notebook【参考方案3】:要使用“sha256_password”或“caching_sha2_password”进行身份验证,您需要安装额外的依赖项:
$ python3 -m pip install PyMySQL[rsa]
来源:https://pymysql.readthedocs.io/en/latest/user/installation.html
【讨论】:
谢谢。除了按照接受的答案中的建议安装“密码学”之外,这样做还会安装除密码学之外的其他依赖项(pycparser、cffi)。【参考方案4】:不管怎样,我今天通过 Python 中的 SQLAlchemy 使用 MySQL 时遇到了这个问题。原来我为这个帐户使用了错误的密码。换句话说,如果您遇到此问题,您可能希望首先确认您使用的是正确的密码。
FWIW,我不确定为什么会生成加密消息。途中有什么问题?
【讨论】:
谢谢,这正是我的问题【参考方案5】:在 MYSQL 工作台上轻松。创建一个新的 MySQL 用户并使用您的 IP 填写“限制主机匹配”。默认为 %。
enter image description here
【讨论】:
【参考方案6】:我也遇到了这个问题。当我尝试解决MySQL Worbench中@brcmipn的问题使用方法时,它告诉我MySQL正在以超级安全模式运行。所以我使用
SET GLOBAL READ_ONLY = OFF;
之后问题就不会再发生了。
【讨论】:
【参考方案7】:我今天在 Python 中通过 SQLAlchemy 使用 MySQL 时也遇到了这个问题。只需通过 mysql -u root -p 登录到数据库,它就消失了。感谢@Ben 的提示。很可能正在发生一些错误。
【讨论】:
我必须对我在脚本中使用的用户执行相同的操作,而不是root
。【参考方案8】:
我收到消息是因为我的数据库尚未启动。
【讨论】:
谢谢,我重新启动了我的电脑,然后我收到了这个错误。但我很确定这个错误与其他答案中提到的cryptography
包无关。阅读您的评论后,我重新启动了 mysql 服务,然后它开始工作了【参考方案9】:
"这个报告的意思是 sha256_password 和 caching_sha2_password 这两种加密算法需要用到密码学。 虽然意思很清楚,但你可能不知道怎么解决。 其实cryptography是一个python包,所以解决方法很简单:"
尝试在您的 cmd 或终端上运行 pip install cryptography
。
这是source。
【讨论】:
以上是关于“sha256_password 或caching_sha2_password 需要加密”的主要内容,如果未能解决你的问题,请参考以下文章