簡體   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