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

时间:2013-02-13 09:34:03

标签: mysql amazon-rds flask-sqlalchemy

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

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

  

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

我的代码看起来像这样:

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

Flask-SQLAlchemy documentation表示mysql数据库连接的SQLALCHEMY_DATABASE_URI格式应如下所示:

mysql://username:password@server/db

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

现在我假设了 "用户名"在SQLAlchemy中引用"主用户名"在AWS RDS控制台中, "服务器"在SQLAlchemy中引用" Endpoint"在AWS RDS控制台中, 和" db"是指"数据库实例名称"

我做错了什么?

如果有人可以使用AWS RDS控制台条款为我描述SQLALCHEMY_DATABASE_URI,那么这将彻底解决问题。

3 个答案:

答案 0 :(得分:20)

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

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

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

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

答案 1 :(得分:2)

这是一条有效路径:EC2信息中心 - >寻找网络&左侧面板的安全性 - >安全小组。

Security groups

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

  1. 创建新的安全组:
  2. 您可以在那里命名您的安全组和说明。

    可能会自动为您创建VPC。

    Create security group window

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

    1. 设置入站和/或出站连接:
    2. 您可以在此处配置入站连接规则。

      Inbound window

      在编辑时 - >添加规则,您可以使用默认预设进行轻松配置,例如端口80上的HTTP。

      Edit inbound connection rules window

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

      • 出于安全原因,请尝试仅允许所需的可信IP和/或安全组。

答案 2 :(得分:0)

确保您在附加配置下在数据库的初始设置中创建数据库名称,除非AWS RDS不会创建数据库。

相关问题