我正在尝试通过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')
答案 0 :(得分:1)
我认为在你的情况下连接字符串是正确的,你只需要使用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'
答案 1 :(得分:1)
我能够通过添加
来完成这项工作 ?sslmode=verify-ca&sslrootcert=rds-combined-ca-bundle.pem
连接字符串。
这来自postgresql文档here以及aws docs。
如果您不关心验证rds,可以将sslmode更改为require。我从here下载了pem文件。
答案 2 :(得分:0)
我这样做:
...
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 /...