我試圖使用dplyr連接到遠程數據庫,我通常通過ssh隧道進行查詢。使用SSH tunel時無法通過套接字錯誤連接到本地MySQL服務器
我首先建立一個SSH隧道類似如下:
alias tunnel_ncg='ssh -fNg -L 3307:127.0.0.1:3306 [email protected] mysql5 -h 127.0.0.1:3306 -P 3307 -u mysqluser -p mypassword'
在這一點上我可以通過連接到本地主機訪問數據庫: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正試圖在本地計算機上查找套接字文件,但是他們應該真的在遠程服務器上查找套接字文件。有沒有辦法解決這個問題或解決方法?
UPDATE:
如果我試圖通過數據庫連接/ RMySQL連接,該連接工作正常:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
對我而言,mysql綁定到本地IP 10.x.x.x,所以我必須替換127.0.0.1。因此,請在Linux上檢查etc/my.cnf以確保您使用正確的IP。 – barryku
這對我有用。奇怪的是,Django Python會連接好,但R的各種軟件包都被拒絕!多煩人。版本:R 3.4.1。 – Deleet