【问题标题】:Connecting R to remote MySQL server - Can't Connect to server将 R 连接到远程 MySQL 服务器 - 无法连接到服务器
【发布时间】:2019-05-13 17:22:36
【问题描述】:

背景故事,我想构建闪亮的应用程序来提供给我们的一些数据收集者,以便他们查看收集的内容。我们目前将所有数据存放在基于云的 MySQL 服务器中。理想情况下,我希望闪亮的应用程序直接从 MySQL 服务器中提取数据,这样它就可以完全自动化,无需任何数据提取,并且 24/7 全天候运行。

我一直在尝试首先使用 RMySQL 包在 R 和 MySQL 之间建立连接,但似乎无法使其正常工作。我已经为此连接设置了一个特定的用户名/密码,它是只读的(但是我也尝试了我的常规用户名,它具有所有权限)。这是我正在运行的代码;

mydb=dbConnect(
   MySQL(), 
   user='myuser', 
   password='mypass', 
   dbname='vgtg', 
   host='ipaddress',
   port=3306,
   )

显然,为了在此处发布,服务器的“ipaddress”已更改,但它是一个通用的地址,例如

  '192.168.1.1'

当我运行上面的代码时,我会收到此错误消息;

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Can't connect to MySQL server on 
 'ipaddress' (0)

我已尝试查找之前发布的问题,但似乎没有一个正是我收到的此错误消息。这让我觉得,出于某种原因,RMySQL 正在本地寻找服务器,而它实际上是一个基于云的远程服务器。

另外,我还应该设置服务器端以允许连接吗?我确实有一个服务器管理员来帮忙,但我不确定他对 R 有多熟悉,同样我对使用服务器也不是特别熟悉。他为我打开了 3306 端口,并且能够看到我尝试通过该端口进行连接。

【问题讨论】:

    标签: mysql r rmysql


    【解决方案1】:

    你的语法是正确的,除了

    port=3306,
    

    您需要删除逗号。也就是说,您收到的错误与语法无关。

    如果不了解设置的详细信息,就很难诊断。 MySQL 数据库驻留在哪里?例如,如果它在 AWS RDS 实例上,那么主机不是标准 IP 地址,它是这样的

    mydb.cm1abc2v4mod.us-west-1.rds.amazonaws.com
    

    假设您使用的 IP 地址是正确的,那么问题很可能出在服务器上。您需要确保端口 3306 对流量开放。否则,R 将无法连接到 DB。

    【讨论】:

    • 啊,对了,当我在这里复制和粘贴代码时,多余的逗号结束了,我的 R 版本无论如何都没有。至于我们的服务器,有人告诉我它是机架空间虚拟服务器。假设我们的服务器管理员能够看到我在端口 3306 上的登录尝试,但不知道为什么它没有通过。
    猜你喜欢
    • 2017-06-26
    • 2016-12-25
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多