【发布时间】:2015-09-17 03:46:23
【问题描述】:
我正在尝试使用 dplyr 连接到远程数据库,我通常通过 ssh 隧道进行查询。
我首先设置了一个 ssh 隧道,如下所示:
alias tunnel_ncg='ssh -fNg -L 3307:127.0.0.1:3306 mysqluser@myhost mysql5 -h 127.0.0.1:3306 -P 3307 -u mysqluser -p mypassword'
此时我可以通过连接到 localhost:3307 来访问数据库。例如:
mysql -h '127.0.0.1' -P 3307 -u mysqluser
如果我尝试通过 dplyr 访问同一个数据库,我会收到一条错误消息,抱怨它无法连接到本地 MySQL 套接字:
> conDplyr = src_mysql(dbname = "mydb", user = "mysqluser", password = "mypassword", host = "localhost", port=3307)
Error in .local(drv, ...) :
Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
我的理解是 RMySQL/dplyr 正在尝试在本地计算机中查找套接字文件,但是他们确实应该在远程服务器中查找它。有没有办法解决这个问题或解决方法?
更新:
如果我尝试通过 dbConnect/RMySQL 进行连接,则连接工作正常:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
【问题讨论】:
标签: r dplyr ssh-tunnel rmysql