【问题标题】:Connect to MySQL DB hosted in an AWS EC2 server连接到托管在 AWS EC2 服务器中的 MySQL 数据库
【发布时间】:2020-07-08 07:24:51
【问题描述】:

我用 Flask 开发了一个网站,这是一个 python 框架,用 nginx 部署,效果很好。该网站通过 pymysql 和 SQLAlchemy 使用以下 URI 与 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 安全组规则中启用了与数据库的连接:

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

【问题讨论】:

    标签: python mysql nginx flask amazon-ec2


    【解决方案1】:

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

    我不确定连接有多安全。让用户打开任何连接可能是有风险的。但是,我对此事并不了解,无法评估其安全状况。 SSL 连接可能更安全,但我不知道如何配置它。

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多