Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过SSH隧道后在R(RStudio)中访问MySQL数据库 我有以下问题。 背景: 我想连接到MySQL数据库并将表下载到R 数据库(MySQL提示符)只能通过SSH隧道访问到另一台服务器 我正在MacBookPro(2015)上使用MacOSX El Capitan 问题:_Mysql_R - Fatal编程技术网

通过SSH隧道后在R(RStudio)中访问MySQL数据库 我有以下问题。 背景: 我想连接到MySQL数据库并将表下载到R 数据库(MySQL提示符)只能通过SSH隧道访问到另一台服务器 我正在MacBookPro(2015)上使用MacOSX El Capitan 问题:

通过SSH隧道后在R(RStudio)中访问MySQL数据库 我有以下问题。 背景: 我想连接到MySQL数据库并将表下载到R 数据库(MySQL提示符)只能通过SSH隧道访问到另一台服务器 我正在MacBookPro(2015)上使用MacOSX El Capitan 问题:,mysql,r,Mysql,R,从“终端”,我可以轻松地用SSH连接到服务器,并在服务器上输入MySQL提示符并运行所需的查询 但是,我无法在RStudio中执行后面的任务 我尝试的代码是: > system('ssh -f <server_user>@<server_ip> -N sleep 20') > db <- dbConnect(MySQL(), host="hostname", user="username", pwd=

从“终端”,我可以轻松地用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)
>系统('ssh-f@-N sleep 20')
>数据库sql1结果dbDisconnect(con)
虽然我可以从ps-A | grep ssh中看到ssh进程正在运行(在我希望的20秒内),并且在R中命令正常执行(不等待更多输入),但我无法连接到相关数据库。该错误消息的作用是“无法连接”,RStudio在出现错误之前至少会挂起一分钟

问题是: 一个人怎么样 (1) 将SSH与 (2) 远程服务器上的MySQL (3) 是否将表直接加载到R数据帧中


谢谢。

您应该使用一种叫做端口转发的方法。这里有一些细节() 例如,假设您想使用SSH隧道从笔记本电脑连接到。您将使用源端口号8080(备用http端口)、目标端口80(http端口)和目标服务器www.ubuntuforums.org.:

ssh -L 8080:www.ubuntuforums.org:80 <host>
ssh-l8080:www.ubuntuforums.org:80
其中,
应替换为笔记本电脑的名称

这是为整个计算机完成的,所以您不需要在r studio中完成


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

谢谢!这是否意味着R中的所有MySql命令(甚至连接字符串)都将通过隧道?是的,因为pory转发是在系统层完成的,所以您将发送到本地端口的所有内容都将发送到远程端口。对不起,我怎么知道正确的本地端口?您指定了本地端口的数量。唯一的规则应该是,它应该是1024以上的数字(这些是由系统使用的),不应该用于其他应用程序。如果你在mysql上只有onr db,你可以选择3036广告,非常感谢!这么好的回答。