通过 RMySQL 连接到 AWS

Connect via RMySQL to AWS

我已经在 AWS 上安装了一个学习管理系统 (Moodle) 的实例。 LMS 使用 MySQL。我想使用 R 从表中收集数据并使用以下代码:

library(DBI)

con <-  dbConnect(RMySQL::MySQL(), 
                  username="public1",
                  password="test",
                  host="127.0.0.1",
                  port=3306,
                  dbname="bitnami_moodle"
                  )

dbReadTable(conn = con, name = "mdl_user")

dbDisconnect(con)

只要我通过 PuTTY 使用隧道,它就可以正常工作。但是稍后我想在一个单独的实例上使用 Shiny,我需要在那里建立直接连接。

我看了一些讨论,但对我的理解水平来说不够详细。谁能告诉我怎么做?

一旦您确定愿意承担所涉及的安全风险,您就会执行以下操作。

  1. 打开您的安全组以允许来自端口 3306 的流量。如果您单击 AWS 仪表板中的实例,您将看到一个与其关联的安全组。您可以单击该组以查看当前打开的端口(可能来自任何地方的端口 22)。您需要对其进行编辑以将端口 3306 添加到 "approved ports" 列表中。您可以只从您当前的 IP(如果这是唯一需要进入的机器)或从所有 IP 如果您需要更广泛的访问权限并且确信您的 MySQL usernames/passwords 很强大足以让 MySQL 向 public 开放(如果数据敏感,这很危险...)。
  2. 在端口 3306 上打开 VM 的防火墙(如果存在 - 许多 AWS 图像没有启用防火墙)。
  3. MySQL 最近的一些发行版限制访问不接受来自外部主机的连接(仅限本地)。如果您收到有关无法从远程主机连接的错误,您需要查找如何打开 MySQL 以在您的分发版上进行外部连接。

另一种安全方法是在 R 机器和远程 MySQL 机器之间留下一个 SSH 隧道。如果您想这样做,请查找 "SSH tunneling"。这将是最安全的,但管理起来也很麻烦。

我能想到的最后一个选择是 运行 在远程计算机上安装 RStudio Server 之类的东西,这样您就不需要打开 MySQL 访问权限。

一如既往,当有人向您展示它时,这非常简单。我在这里找到了关键信息:

https://www.youtube.com/watch?v=O2-9sKSCk4w

谢谢 Wilson18!

我现在可以从任何位置连接到远程 MySQL 服务器,而无需使用 SSH 或隧道。