gpt4 book ai didi

mysql - 通过 SSH 建立隧道后访问 R (RStudio) 中的 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-28 23:35:59 25 4
gpt4 key购买 nike

我有以下问题。

背景:

  1. 我想连接到 MySQL 数据库并将表格下载到 R 中。
  2. 数据库(MySQL 提示符)只能通过到另一台服务器的 SSH 隧道访问。
  3. 我在 MacBook Pro (2015) 上使用 Mac OSX El Capitan。

问题:

从“终端”,我可以轻松地通过 SSH 连接到服务器,然后输入 MySQL 提示符并运行我需要的查询。

但是,我无法在 RStudio 中执行后面的任务。

我试过的代码是:

> system('ssh -f <server_user>@<server_ip> -N sleep 20')       
> db <- dbConnect(MySQL(), host="hostname", user="username", pwd="password", dbname="databasename", port=3306)
> sql1 <- paste("SELECT * FROM databasename.tablename", sep="")
> results <- dbGetQuery(con, sql1)
> dbDisconnect(con)

虽然我可以从 ps -A | 中看到grep ssh ssh 进程正在运行(我希望它运行 20 秒),并且在 R 中命令正常执行(不等待更多输入),我无法连接到相关数据库。错误消息是“无法连接”的影响,并且 RStudio 在出现错误之前至少挂起一分钟。

问题:

一个人如何(1)结合SSH使用(2)远程服务器上的MySQL到(3) 将表格直接加载到 R 数据框中?

谢谢。

最佳答案

您应该使用称为端口转发的东西。一些细节在这里(https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding)例如,假设您想从笔记本电脑连接到 http://www.ubuntuforums.org使用 SSH 隧道。您将使用源端口号 8080(备用 http 端口)、目标端口 80(http 端口)和目标服务器 www.ubuntuforums.org。 :

ssh -L 8080:www.ubuntuforums.org:80 <host>

在哪里<host>应替换为您的笔记本电脑的名称。

这是针对整台计算机完成的,因此您无需从 r studio 执行此操作。

当然,您需要将端口转发到 3036。但是您需要在服务器上有特殊权限。因为在大多数主机上你只能从本地主机连接(例如从 php)

关于mysql - 通过 SSH 建立隧道后访问 R (RStudio) 中的 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com