【问题标题】:"cryptography is required for sha256_password or caching_sha2_password"“sha256_password 或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()

【问题讨论】:

    标签: python mysql cryptography mysql-python


    【解决方案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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-24
          • 1970-01-01
          • 2022-06-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多