繁体   English   中英

与AWS RDS错误的Flask-SQLAlchemy ssl连接

[英]Flask-SQLAlchemy ssl-connection with AWS RDS error

我试图通过ssl连接flask app mysql连接与AWS RDS,当我尝试使用像这样的mysql客户端时它工作

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

我可以登录但是当我尝试使用flask app时

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')

我认为在你的情况下连接字符串是正确的,你只需要使用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'

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

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

到连接字符串。

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

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

我这样做:

...
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)

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

〜/ ...

但:

/家庭/ YOUR_USER / ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM