使用Flask-SQLAlchemy连接到AWS RDS MySQL数据库实例

Mon*_*oni 18 mysql amazon-rds flask-sqlalchemy

对于我的Flask应用程序,我想使用Flask-SQLAlchemy扩展来连接我在AWS RDS上创建的数据库实例.

当我尝试连接时,应用程序超时,我收到以下错误:

sqlalchemy.exc.OperationalError :( OperationalError)(2003,"无法连接到MySQL服务器'xxxxxxxxxxxxxxx.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com'(60")

我的代码看起来像这样:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
application = Flask(__name__)

application.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://{master username}:{db password}@{endpoint}/{db instance name}'
db = SQLAlchemy(application)

@application.route('/')
def hello_world():
    return 'Hello World'

if __name__ == '__main__':
    application.run()
Run Code Online (Sandbox Code Playgroud)

瓶-SQLAlchemy的文档说,SQLALCHEMY_DATABASE_URI对mysql数据库连接的格式应该是这样的:

mysql://username:password@server/db
Run Code Online (Sandbox Code Playgroud)

此外,我可以检查AWS RDS控制台以获取有关我的数据库实例的信息.控制台看起来像这样.

现在我假设SQLAlchemy中的"用户名"是指AWS RDS控制台中的"主用户名",SQLAlchemy中的"server"是指AWS RDS控制台中的"端点","db"是指"数据库"实例名称"

我究竟做错了什么??

如果有人可以使用AWS RDS控制台术语为我描述SQLALCHEMY_DATABASE_URI,那么这将完全解决问题.

sbo*_*ose 20

转到AWS RDS控制台并选择您的实例 - >数据库安全组 - >单击默认

并根据建议的IP范围添加新的CIDR.

这基本上是一个防火墙配置,用于确定谁可以连接到数据库实例.

您可以将其设置为0.0.0.0/0,以便防火墙不会阻止您从任何主机/网络访问它.


Fáb*_*eia 5

这是一个有效的路径:EC2 仪表板 -> 从左侧面板查找网络和安全 -> 安全组。

安全组

如果您创建了安全组,则可以转到第 2 步。

  1. 创建新的安全组:

您可以在那里命名您的安全组和描述。

VPC 可能会自动为您创建。

创建安全组窗口

创建后,从列表中选择它。

  1. 设置入站和/或出站连接:

您可以在此处配置入站连接规则。

入站窗口

在编辑 -> 添加规则时,您有默认预设以便于配置,例如端口 80 上的 HTTP。

编辑入站连接规则窗口

我希望从现在开始这对每个人都有帮助。

  • 由于安全原因,尽量只允许受信任的 IP 和/或需要的安全组。