Bei Verwendung von SSH tunel kann keine Verbindung zum lokalen MySQL-Server über Socket-Fehler hergestellt werden

8

Ich versuche, mit dplyr eine Verbindung zu einer entfernten Datenbank herzustellen, die ich normalerweise über einen SSH-Tunnel abfrage.

Ich habe zuerst einen SSH-Tunnel wie folgt eingerichtet:

%Vor%

An dieser Stelle kann ich auf die Datenbank zugreifen, indem ich mich mit localhost: 3307 verbinde. Zum Beispiel:

%Vor%

Wenn ich versuche, über dplyr auf dieselbe Datenbank zuzugreifen, bekomme ich einen Fehler, dass ich mich nicht mit dem lokalen MySQL-Socket verbinden kann:

%Vor%

Nach meinem Verständnis versucht RMySQL / dplyr, auf dem lokalen Computer nach einer Socket-Datei zu suchen, sollte sie aber auf dem Remote-Server suchen. Gibt es eine Möglichkeit, dies zu beheben, oder ein Workaround?

UPDATE:

Wenn ich versuche, über dbConnect / RMySQL eine Verbindung herzustellen, funktioniert die Verbindung einwandfrei:

%Vor%     
dalloliogm 30.06.2015, 11:12
quelle

1 Antwort

27

So albern wie es klingt, das Ersetzen von localhost durch eine IP-Adresse ( 127.0.0.1 ) löst das Problem.

%Vor%

Eine Erklärung finden Sie in der MySQL-Dokumentation :

  

Unter Unix behandeln MySQL-Programme den Hostnamen localhost auf eine Art und Weise, die sich wahrscheinlich von dem unterscheidet, was Sie im Vergleich zu anderen netzwerkbasierten Programmen erwarten.

     

Bei Verbindungen zu localhost versuchen MySQL-Programme, eine Verbindung zum lokalen Server herzustellen, indem sie eine Unix-Socket-Datei verwenden. Dies tritt selbst dann auf, wenn eine Option --port oder -P angegeben wird, um eine Portnummer anzugeben .

     

Um sicherzustellen, dass der Client eine TCP / IP-Verbindung zum lokalen Server herstellt, verwenden Sie --host oder -h, um einen Hostnamen von 127.0.0.1 oder die IP-Adresse oder den Namen des lokalen Servers anzugeben.

    
zero323 30.06.2015, 12:15
quelle

Tags und Links