from - Conéctese a la instancia de la base de datos MySQL de AWS RDS con Flask-SQLAlchemy
crear base de datos mysql en amazon (2)
Para mi aplicación Flask, quiero usar la extensión Flask-SQLAlchemy para conectar con una instancia de base de datos que creé en AWS RDS.
Cuando intento conectarme, la aplicación se agota y aparece el siguiente error:
sqlalchemy.exc.OperationalError: (OperationalError) (2003, "No se puede conectar al servidor MySQL en ''xxxxxxxxxxxxxxx.xxxxxxxxxx.us-east-1.rds.amazonaws.com'' (60")
Mi código se ve así:
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()
La documentación de Flask-SQLAlchemy dice que el formato de SQLALCHEMY_DATABASE_URI para las conexiones de la base de datos mysql debería tener este aspecto:
mysql://username:password@server/db
Además, puedo verificar la consola de AWS RDS para obtener información sobre mi instancia de base de datos. La consola se ve así.
En este momento, estoy asumiendo que el "nombre de usuario" en SQLAlchemy se refiere al "Nombre de usuario principal" en la consola de AWS RDS, el "servidor" en SQLAlchemy se refiere al "Punto final" en la consola de AWS RDS, y "db" se refiere a la "Base de datos" Nombre de instancia"
¿¿Qué estoy haciendo mal??
Si alguien pudiera describir el SQLALCHEMY_DATABASE_URI por mí con los términos de la consola de AWS RDS, eso resolvería completamente el problema.
Esta es una ruta válida: EC2 dashboard -> Buscar redes y seguridad desde el panel lateral izquierdo -> Grupos de seguridad.
Si tiene un grupo de seguridad creado, puede ir al número 2.
- Creando un nuevo grupo de seguridad:
Allí puedes nombrar tu grupo de seguridad y descripción.
VPC probablemente se creará automáticamente para usted.
Después de crearlo, selecciónelo de la lista.
- Configurar conexiones entrantes y / o salientes:
Aquí puede configurar las reglas de conexiones entrantes.
En editar -> agregar regla, tiene ajustes predeterminados para una configuración fácil, por ejemplo, HTTP en el puerto 80.
Espero que esto ayude a todos de ahora en adelante.
- Debido a razones de seguridad, trate de permitir solo IP confiables y / o grupos de seguridad necesarios.
Vaya a su consola de AWS RDS y elija su instancia -> Grupos de seguridad de DB -> Haga clic en Predeterminado
y agregue un nuevo CIDR según el rango de IP recomendado.
Esta es básicamente una configuración de firewall que determina quién puede conectarse a la instancia de la base de datos.
Puede configurarlo como 0.0.0.0/0 para que el firewall no le impida acceder a él desde cualquier host / red.