连接到AWS EC2服务器中托管的MySQL DB

时间:2020-03-27 14:25:24

标签: python mysql nginx flask amazon-ec2

我用Flask开发了一个网站,该框架是python框架,并与nginx一起部署,效果很好。该网站使用以下URI通过pymysql和SQLAlchemy与MySQL数据库进行交互:

"SQLALCHEMY_DATABASE_URI": "mysql+pymysql://user:password@localhost/database"

网站和数据库都托管在AWS EC2服务器中。我试图从我的个人计算机访问该数据库,并与DBeaver建立连接。我遵循的tutorial说将 mysqld.cnf 文件中找到的绑定地址设置为0.0.0.0:

bind-address = 0.0.0.0

但是,这样做会断开网站与数据库的连接。这是在日志中找到的错误:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: ...]

因此,我无法设置绑定地址。当我将其评论后,该网站可以再次运行。如何在允许远程访问数据库的同时保持网站正常运行?

虽然我不确定这有什么帮助,但是我已经在AWS安全组规则中启用了到数据库的连接:

enter image description here

非常感谢您提供有关我的问题的帮助或参考。保持安全!

1 个答案:

答案 0 :(得分:0)

可以保留mysql配置。访问协议已在AWS中定义。我所缺少的是为数据库配置一个远程用户,以“%”作为主机(这意味着任何主机都可以)。然后,我刚刚在DBeaver中输入了数据库连接凭据,它就起作用了!

我不确定连接的安全性。让用户与任何连接保持开放可能有风险。但是,我对此事不太了解,无法评估其安全状态。 SSL连接可能更安全,但我不知道如何配置它。