“ sha256_password或caching_sha2_password需要加密”

时间:2019-02-01 10:42:44

标签: python mysql cryptography mysql-python

美好的一天。希望你一切都好。有人可以帮我解决这个问题吗?

我是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()

9 个答案:

答案 0 :(得分:14)

可以使错误消息更加全面和有用。为了修复此“密码”程序包,需要安装。

line[0] == ">"

答案 1 :(得分:6)

对于它的价值,我今天在Python中通过SQLAlchemy使用MySQL遇到了这个问题。原来,我为此帐户使用了错误的密码。换句话说,如果您遇到此问题,则可能首先要确认您使用的密码正确。

FWIW,我不确定为什么会生成加密消息。一路上有越野车吗?

答案 2 :(得分:3)

我今天在Python中通过SQLAlchemy使用MySQL时也遇到了这个问题。它只是通过mysql -u root -p登录数据库而消失了。归功于@Ben作为提示。越野车很可能正在发生。

答案 3 :(得分:2)

我也遇到了这个问题。当我尝试解决MySQL Worbench中@brcmipn的问题使用方法时,它告诉我MySQL正在超级安全模式下运行。因此我使用

SET GLOBAL READ_ONLY = OFF;

然后此问题不再发生。

答案 4 :(得分: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并尝试以这种方式连接。它对我有用,希望对你也有用。

答案 5 :(得分:1)

"这个报告的意思是sha256_password和caching_sha2_password这两种加密算法需要用到密码学。
虽然意思很清楚,但你可能不知道如何解决。
实际上,cryptography 是一个 python 包,所以解决方案很简单:"

尝试在您的 cmd 或终端上运行 pip install cryptography
这是source

答案 6 :(得分:0)

要使用“ sha256_password”或“ caching_sha2_password”进行身份验证,您需要安装其他依赖项:

$ python3 -m pip install PyMySQL[rsa]

来源:https://pymysql.readthedocs.io/en/latest/user/installation.html

答案 7 :(得分:0)

在MYSQL Workbench上很容易。创建一个新的MySQL用户,并用您的IP填写“限制主机匹配”。默认为%。

enter image description here

答案 8 :(得分:0)

我收到消息是因为我的数据库尚未启动。