Desarrollé un sitio web con Flask, un marco de Python, implementado con nginx, que funciona bien. El sitio web interactúa con una base de datos MySQL a través de pymysql y SQLAlchemy utilizando la siguiente URI:
"SQLALCHEMY_DATABASE_URI": "mysql+pymysql://user:password@localhost/database"Tanto el sitio web como la base de datos están alojados en un servidor AWS EC2. Estoy tratando de acceder a esa base de datos desde mi computadora personal, estableciendo una conexión con DBeaver. El tutorial que estoy siguiendo dice que establezca la dirección de enlace que se encuentra en el archivo mysqld.cnf en 0.0.0.0:
bind-address = 0.0.0.0Sin embargo, al hacerlo se interrumpe la conexión del sitio web con la base de datos. Este es el error encontrado en el registro:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: ...]Por lo tanto, no puedo configurar la dirección de enlace. El sitio web vuelve a funcionar cuando lo comento. ¿Cómo puedo mantener el sitio web funcionando mientras permito el acceso remoto a la base de datos?
Aunque no estoy seguro de cómo ayuda esto, he habilitado la conexión a la base de datos en las reglas del grupo de seguridad de AWS:
Cualquier ayuda o referencias con respecto a mi problema son muy apreciadas. ¡Mantenerse a salvo!
La configuración de mysql se puede dejar como está. Los protocolos de acceso ya están definidos en AWS. Lo que me faltaba era configurar un usuario remoto para la base de datos, con '%' como host (lo que significa que cualquier host está bien). Luego ingresé las credenciales de conexión de la base de datos en DBeaver, ¡y funcionó!
No estoy seguro de cuán segura es la conexión. Dejar al usuario abierto a cualquier conexión es probablemente arriesgado. Sin embargo, no soy muy versado en el tema y no puedo evaluar su estado de seguridad. Una conexión SSL puede ser más segura, pero no sé cómo configurarla.