5

我正在尝试通过 ssl 将烧瓶应用程序 mysql 连接与 AWS RDS 连接,当我尝试像这样使用 mysql 客户端时它可以工作

mysql -u user -h myrds.rds.amazonaws.com -p --ssl-ca=rds-combined-ca-bundle.pem

我可以登录,但是当我尝试使用烧瓶应用程序时

SQLALCHEMY_DATABASE_URI = 'mysql://user:Password@myrds.rds.amazonaws.com.rds.amazonaws.com/miro_dev?ssl_cert=rds-combined-ca-bundle.pem'

它向我发送错误

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2026, 'SSL connection error: Unable to get private key')

4

3 回答 3

4

我能够通过添加来完成这项工作

?sslmode=verify-ca&sslrootcert=rds-combined-ca-bundle.pem

到连接字符串。

这来自这里的 postgresql 文档以及aws 文档

如果您不关心验证 rds,可以将 sslmode 更改为 require。我从这里下载了 pem 文件。

于 2017-08-22T22:31:15.040 回答
3

我认为在您的情况下,连接字符串是正确的,您只需要使用ssl_ca选项而不是ssl_cert

SQLALCHEMY_DATABASE_URI = 'mysql://user:password@myrds.rds.amazonaws.com.rds.amazonaws.com/miro_dev?ssl_ca=rds-combined-ca-bundle.pem'
于 2016-10-31T12:20:13.567 回答
1

我这样做:

...
ssl_args = {'ssl': {'ca': 'YOUR_SSL_CERT_PATH'}}

db_url = 'mysql://{}:{}@{}/{}'.format(username, password, server, database)
engine = create_engine(db_url, connect_args=ssl_args, echo=False)
cnx = engine.connect()
df = pd.read_sql_table('table_name', cnx)

我建议不要输入如下路径:

~/...

但:

/home/YOUR_USER/...

于 2016-07-20T15:59:04.297 回答