“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 需要加密”的主要内容,如果未能解决你的问题,请参考以下文章