将SSL与SQLAlchemy结合使用

sha*_*der 5 python mysql sqlalchemy

我最近将项目更改为使用SQLAlchemy,并且项目运行正常,它使用了外部MySQL服务器。

现在,我正在尝试使用具有SSL CA的其他MySQL服务器,并且该服务器无法连接。

(它确实使用MySQL Workbench连接,因此证书应该没问题)

我正在使用以下代码:

ssl_args = {'ssl': {'ca': ca_path}}
engine = create_engine("mysql+pymysql://<user>:<pass>@<addr>/<schema>",
                        connect_args=ssl_args)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法连接到\ addr \上的MySQL服务器([WinError 10054]远程主机强行关闭了现有连接)

有什么建议么?

sha*_*der 5

我将DBAPI更改为MySQL-Connector,并使用以下代码:

ssl_args = {'ssl_ca': ca_path}
engine = create_engine("mysql+mysqlconnector://<user>:<pass>@<addr>/<schema>",
                        connect_args=ssl_args)
Run Code Online (Sandbox Code Playgroud)

现在就可以了。

  • 这救了我的命。谢谢! (2认同)
  • ssl_args 应采用以下格式: `ssl_args = {'sslrootcert':'server-ca.pem', 'sslcert':'client-cert.pem', 'sslkey':'client-key.pem'}` (2认同)

Ben*_*Ben 5

如果您只是从具有 ssl 连接的客户端计算机进行连接(因此您无权访问证书和密钥),则可以简单地将 ssl=true 添加到您的 uri。

编辑:

例如: mysql_db = "mysql+mysqlconnector://<user>:<pass>@<addr>/<schema>?ssl=true"