2013-02-13 51 views
16

Đối với ứng dụng Flask của tôi, tôi muốn sử dụng phần mở rộng Flask-SQLAlchemy để kết nối với một cá thể cơ sở dữ liệu mà tôi đã tạo trên AWS RDS.Kết nối với cá thể cơ sở dữ liệu MySQL AWS RDS với Flask-SQLAlchemy

Khi tôi cố gắng để kết nối, thời gian ứng dụng ra và tôi nhận được lỗi sau:

sqlalchemy.exc.OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'xxxxxxxxxxxxxxx.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com'(60")

Mã của tôi trông như thế này:

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

Các Flask-SQLAlchemy documentation nói rằng định dạng của SQLALCHEMY_DATABASE_URI cho các kết nối cơ sở dữ liệu mysql sẽ trông giống như sau:

mysql://username:[email protected]/db 

Ngoài ra, tôi có thể kiểm tra giao diện điều khiển AWS RDS để biết thông tin về cá thể cơ sở dữ liệu của tôi. Giao diện điều khiển trông giống như this.

Ngay bây giờ tôi đang giả định rằng "username" trong SQLAlchemy đề cập đến "Master Tên đăng nhập" trong AWS RDS console, "máy chủ" trong SQLAlchemy đề cập đến "Endpoint" trong AWS RDS console, và " db "đề cập đến" Tên sơ thẩm cơ sở dữ liệu "

Tôi đang làm gì sai?

Nếu ai đó có thể mô tả SQLALCHEMY_DATABASE_URI cho tôi bằng điều khoản AWS RDS, điều đó sẽ giải quyết được hoàn toàn vấn đề.

Trả lời

19

Đến console AWS RDS của bạn và chọn ví dụ của bạn -> DB Security Groups -> Click Mặc định

và thêm một CIDR mới theo dải IP đề nghị.

Về cơ bản đây là cấu hình tường lửa xác định ai có thể kết nối với cá thể cơ sở dữ liệu.

Bạn có thể đặt thành 0.0.0.0/0 để tường lửa không ngăn bạn truy cập vào từ bất kỳ máy chủ/mạng nào.

+0

Câu trả lời này không hợp lệ vì giao diện trong AWS đã thay đổi :( – sbose

0

Đây là đường dẫn hợp lệ: Trang tổng quan EC2 -> Tìm mạng & bảo mật từ bảng điều khiển bên trái -> Nhóm bảo mật.

Security groups

Nếu bạn có một nhóm bảo mật được tạo ra, bạn có thể đi đến số 2.

  1. Tạo một nhóm bảo mật mới:

Ở đó bạn có thể đặt tên nhóm bảo mật của bạn và sự miêu tả.

VPC có thể sẽ được tạo tự động cho bạn.

Create security group window

Sau khi tạo, hãy chọn từ danh sách.

  1. Thiết lập kết nối trong nước và/hoặc quốc tế:

Ở đây bạn có thể cấu hình các kết nối rule gửi đến.

Inbound window

On chỉnh sửa -> thêm quy tắc bạn phải cài đặt trước mặc định cho cấu hình dễ dàng, ví dụ HTTP trên cổng 80.

Edit inbound connection rules window

Tôi hy vọng điều này sẽ giúp tất cả mọi người từ bây giờ.

Các vấn đề liên quan