我正在开发一个 Flask 应用程序,它使用 SQLAlchemy 和 PyMySQL 连接到 Render.com 上托管的 MySQL 数据库。我面临 SSL 连接问题,并且不确定如何正确配置 SSL 参数。
这是一个片段:
load_dotenv()
db_connect_string = os.getenv('DB_STR')
# Creating the engine.
engine = create_engine(db_connect_string, connect_args={"ssl_ca": "/etc/ssl/cert.pem"})
我尝试了 ssl_ca 参数的不同变体,但我不断遇到与 SSL 相关的错误,例如证书文件的“服务器不允许不安全连接”或“FileNotFoundError”。
Render.com 提供 SSL 证书,但我不确定如何为此托管环境在 SQLAlchemy 和 PyMySQL 中正确配置 SSL 参数。服务文档提到 SSL 是自动处理的。
任何指导或见解将不胜感激。谢谢!
Render 将在托管服务上自动为您处理 SSL 证书,例如托管的 postgres 实例或面向公众的服务器的 SSL。
我不确定你如何将 mysql 部署到你的工作空间中,但如果你使用渲染 mysql 示例,你将无法开箱即用的 SSL - 你需要自己设置。
在示例中,您需要生成自己的 SSL 证书,将它们添加到安装卷中,并配置 mysql 以指向它们。 (一些文档)
如果您已经完成了该设置,并且问题是您的数据库连接无法在安装卷或本地文件系统中找到证书(也许您已将证书提交到存储库中),您可以随时将您的计划升级到starter 和 SSH 连接到您的服务,以在文件系统中导航以查找证书并获取正确的路径,或者让启动程序为您记录一些路径,以便您可以找出正确的路径,然后将其放入您的代码中。