gpt4 book ai didi

mysql - 是否有任何关于此 PyMysql/Mysql 行为的文档?

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:56 25 4
gpt4 key购买 nike

这是我用来连接数据库的 pymysql 代码。我正在使用带有 Mysql 版本 5.7.22 的 AWS RDS Mysql 实例进行测试。我正在从 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html 获取证书

pymysql.connect(secret_dict['host'], user=secret_dict['username'],
passwd=secret_dict['password'], port=port, db=dbname,
connect_timeout=5, ssl={'ca': './rds-combined-ca-bundle.pem'})

此代码适用于我的测试数据库,用户启用了 ssl,用户 wo 启用了 ssl。 - (通过 ALTER USER 'encrypted_user'@'%' REQUIRE SSL; )

我的问题是,我在任何 MySQL verison 数据库中看到的这种 pymysql 行为是真实的还是在任何地方记录的?我指的行为是,如果您将 ssl 选项添加到连接调用,它应该工作(成功连接),无论实际用户是否需要 SSL。我不想用每个 Mysql 版本进行测试 :)

从pymysql代码来看,它似乎做的是check。如果有任何与请求关联的 ssl 参数,将其添加到 ssl 映射,然后 creates来自该 ssl 映射的 ctx_object 并在初始化 socket 时使用该 ctx_ 对象与数据库。

最佳答案

刚在 Mysql 7 文档中找到这个 guide

“在服务器端,--ssl 选项指定服务器允许但不需要加密连接。此选项默认启用,因此无需明确指定。”

“默认情况下,如果服务器支持加密连接,MySQL 客户端程序会尝试建立加密连接,并可通过 --ssl-mode 选项进一步控制:”

“在没有 --ssl-mode 选项的情况下,客户端尝试使用加密连接,如果无法建立加密连接,则回退到未加密连接。这也是显式 --ssl-mode 的行为=首选选项。”

“首选:如果服务器支持加密连接,则建立加密连接,如果无法建立加密连接,则回退到未加密连接。如果未指定 --ssl-mode,则这是默认设置。”

所以我相信正在发生的事情是 pymysql 没有指定 ssl-mode 选项,所以正在使用的 ssl 客户端模式是 PREFERRED 这意味着客户端(pymysql)将尝试建立 ssl 连接(我认为失败因为用户不需要它)然后回退到未加密的连接,这将是成功的。

关于mysql - 是否有任何关于此 PyMysql/Mysql 行为的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56202777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com