簡體   English   中英

通過SSH建立隧道后,在R(RStudio)中訪問MySQL數據庫

[英]Accessing a MySQL database in R (RStudio) after tunneling via SSH

我有以下問題。

背景:

  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可以看到ps -A | grep ssh ps -A | grep ssh表示ssh進程正在運行(我希望它運行20秒鍾),並且在R中正常執行的命令(不等待更多輸入),我無法連接到相關的數據庫。 錯誤消息是“無法連接”的結果,RStudio掛起至少一分鍾,然后出現錯誤。

問題:

一(1)如何將SSH與(2)遠程服務器上的MySQL結合使用以(3)將表直接加載到R數據幀中?

謝謝。

您應該使用稱為端口轉發的東西。 一些詳細信息在這里( https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding )例如,假設您想使用SSH隧道從筆記本電腦連接到http://www.ubuntuforums.org 您將使用源端口號8080(備用http端口),目標端口80(http端口)和目標服務器www.ubuntuforums.org。

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

其中<host>應替換為筆記本電腦的名稱。

這是針對整個計算機完成的,因此您無需從r studio進行此操作。

偏離路線時,您需要將端口轉發到3036。但是,您需要在服務器上具有特殊特權。 因為在大多數主機上,您只能從localhost連接(例如,從php連接)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM