Ich versuche, dplyr verwenden, um eine Verbindung zu einer entfernten Datenbank, die ich in der Regel durch einen SSH-Tunnel abfragen.Kann nicht Verbindung zu lokalen MySQL-Server durch Socket-Fehler bei der Verwendung von SSH tunel
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'
An dieser Stelle ich die Datenbank durch den Anschluss an localhost zugreifen können:
ich zum ersten Mal einen SSH-Tunnel wie folgt aufgebaut 3307. Zum Beispiel:
mysql -h '127.0.0.1' -P 3307 -u mysqluser
Wenn ich die gleiche Datenbank durch dplyr zuzugreifen versuchen, erhalte ich einen Fehler beschweren, dass es nicht auf dem lokalen MySQL-Socket-Verbindung herstellen kann:
> 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)
Mein Verständnis ist, dass RMySQL/dplyr versucht, auf dem lokalen Computer nach einer Socket-Datei zu suchen, sollte diese jedoch auf dem Remote-Server suchen. Gibt es eine Möglichkeit, dies zu beheben, oder ein Workaround?
UPDATE:
Wenn ich versuche, durch dbConnect/RMySQL zu verbinden, funktioniert die Verbindung fein:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
Für meinen Fall war mysql an lokale IP bei 10.x.x.x gebunden, also muss ich stattdessen 127.0.0.1 ersetzen. Überprüfen Sie daher unter Linux auf etc/my.cnf, um sicherzustellen, dass Sie die richtige IP verwenden. – barryku
Das hat bei mir funktioniert. Seltsamerweise würde sich Django Python gut verbinden, aber Rs verschiedene Pakete weigerten sich alle! Wie nervig. Version: R 3.4.1. – Deleet