pymysql是否完全支持MySQL身份验证?

时间:2019-12-14 01:04:40

标签: pymysql

我正在尝试使用通过AWS Lambda运行的功能连接到AWS RDS上托管的MySQL(5.7.22)数据库,但是由于身份验证错误,无法使用pymysql连接到数据库:{ {1}}。奇怪的是,在我一直用于调试问题的AWS实例上,我发现我能够使用与"Access denied for '<user>'@'<host>' (using password: YES)"相同的参数连接到数据库。

如果相关,我的密码仅包含字母数字字符。

这是我使用mysqlclient库(使用裸库产生相同结果)通过两个软件包连接到数据库的一个最小示例:

records

import pymysql import MySQLdb config = {} # Dictionary with database credentials. MySQLdb.connect( hostname=config['host'], port=config["port"], user=config['username'], passwd=config['password'], db=config['database'], connect_timeout=5, ) # Works fine pymysql.connect( hostname=config['host'], port=config["port"], user=config['username'], passwd=config['password'], db=config['database'], connect_timeout=5, ) # raises pymysql.err.OperationalError: (1045, "Access denied for user '<user>'@'<host>' (using password: YES)") 是否支持某些数据库配置或需要其他选项?

1 个答案:

答案 0 :(得分:0)

事实证明,问题在于我需要指定SSL CA(可以在here上找到RDS根证书):

pymysql.connect(
            hostname=config['host'],
            port=config["port"],
            user=config['username'],
            passwd=config['password'],
            db=config['database'],
            connect_timeout=5,
            ssl={"ca": "./rds-ca-2015-root.pem"},
        )

我不确定MySQLdb软件包如何避免此步骤。