如何为SSL配置PyMySQL连接?

时间:2018-12-31 17:20:29

标签: python ssl pymysql

我正在尝试使用SSL和PyMySQL连接我的数据库,但是找不到有关语法的良好文档。

这些凭据可在Workbench和CLI中使用,但使用PyMySQL时出现此错误。

无法连接到'server.domain.com'上的MySQL服务器([WinError 10061]无法建立连接,因为目标计算机主动拒绝了它)“)

db_conn = pymysql.connect(
    host=db_creds['host'],
    user=db_creds['user'],
    passwd=db_creds['passwd'],
    db=db_creds['db'],
    charset=db_creds['charset'],
    ssl={'ssl':{'ca': 'C:/SSL_CERTS/ca-cert.pem',
                'key' : 'C:/SSL_CERTS/client-key.pem',
                'cert' : 'C:/SSL_CERTS/client-cert.pem'
                }
        }
)

如果我关闭SSL并丢弃SSL参数,则可以连接不安全的设备。 SSL参数有什么问题?

2 个答案:

答案 0 :(得分:1)

感谢大家的帮助。问题中列出的语法是正确的,但是我尝试连接的服务器正在使用非标准端口。我需要添加

端口= db_creds ['端口']

谢谢曼尼·卡里(MannyKary)的线索。

答案 1 :(得分:1)

对于需要 X509 的用户,我使用客户端证书和密钥连接 pyMysql 时遇到了同样的问题,TiDB(兼容 mySQL 5.7)服务器抱怨没有提供证书!!!

printWidth

查看 PyMysql 1.0.2 的源代码,似乎 ssl 参数现在是布尔值而不是 ssl_dict,因此您应该将所有 ssl 参数放入单独的参数中,例如,

[2021/05/18 16:31:23.881 +00:00] [INFO] [privileges.go:258] ["ssl check failure, require x509 but no verified cert"] [user=mindline_root] [host=%]