通过RMySQL连接到AWS

时间:2015-07-16 11:36:37

标签: amazon-web-services shiny moodle shiny-server rmysql

我在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,我需要直接连接。

我查看了一些讨论,但它们对我的理解水平不够详细。任何人都可以向我解释如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

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

  1. 打开安全组以允许来自端口3306的流量。如果单击AWS仪表板中的实例,您将看到与其关联的安全组。您可以单击该组以查看当前打开的端口(可能是从任何位置的端口22)。您需要编辑它以将端口3306添加到“已批准的端口”列表中。你可以从你当前的IP(如果这是唯一需要进入的机器)或所有IP(如果你需要更广泛的访问权限)做到这一点,并确信你的MySQL用户名/密码足够强大,可以让MySQL打开公众(如果数据敏感,这很危险......)。
  2. 在端口3306上打开VM的防火墙(如果存在 - 许多AWS镜像未启用防火墙)。
  3. 最近MySQL的一些发行版限制访问不接受来自外部主机的连接(仅限本地)。如果您收到有关无法从远程主机连接的错误,则需要查找如何在您的发行版上打开外部连接的MySQL。
  4. 另一种安全方法是将R隧道的SSH隧道留给远程MySQL机箱。如果要执行此操作,请查找“SSH隧道”。这将是最安全的,但也很麻烦。

    我能想到的最后一个选项是在远程机器上运行类似RStudio Server的东西,这样你就不需要打开MySQL访问了。

答案 1 :(得分:0)

与往常一样,当有人向您展示时,这很容易。我在这里找到了关键信息:

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

谢谢Wilson18!

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