Perl Verbindung zu SQL-Server über VPN, Perl nein, Heidi ja.

Creeed

Captain
Registriert
Sep. 2002
Beiträge
3.852
Kurzer Abriß des Problems: Ein Kunde will ein Skript lokal ausführen das auf einen entfernten Datenbankserver zugreift. Die Verbindung wird über Open VPN erstellt. Mit Heidi komme ich ohne Probleme auf den SQL Server, das Skript mit den gleichen Zugangsdaten aber nicht. Folgende Fehlermeldung kommt zurück wenn ich versuche über DBI zu connecten.

Code:
 DBI connect('database=...') failed: Can't connect to MySQL server on 'localhost' (10061) at ... line 73.

Auf dem Datenbankserver läuft das Skript ohne Probleme. Der Kunde kann das Skript aber derzeit dort nicht produktiv ausführen. Hat vielleicht von euch einer eine Idee was das sein könnte? Ich hab schon alles mögliche probiert bis hin zu Firewall komplett aus.

Mich irritiert dass er den Server versucht über Localhost zu connecten obwohl ich ihm die ServerIP mit gebe im Connectionstring.
Irgendwie glaub ich das Perl mich nicht mag...
 
Creeed schrieb:
Auf dem Datenbankserver läuft das Skript ohne Probleme. Der Kunde kann das Skript aber derzeit dort nicht produktiv ausführen. Hat vielleicht von euch einer eine Idee was das sein könnte? Ich hab schon alles mögliche probiert bis hin zu Firewall komplett aus.

Mich irritiert dass er den Server versucht über Localhost zu connecten obwohl ich ihm die ServerIP mit gebe im Connectionstring.
Irgendwie glaub ich das Perl mich nicht mag...

problem erkannt, localhost und so
 
Ja toll, aber der Connectionstring ist mit der IP des Servers, die ich auch anpingen kann. Also nix mit Lokalhorst, 127.0.0.1 oder ::1. Kein Element des Connectionstrings verweist auf eine lokale IP, schon gar nicht auf den lokalen Rechner.
 
da sagt dbi aber was anderes , und ich glaube kaum , dass die fehlermeldung falsche werte ausspuckt...
 
Ohne den konkreten Verbindungsweg und den Source zu sehen, läuft es auf Raten hinaus, aber

- entweder ist im Skript noch irgendwo localhost hartkodiert, oder
- die Meldung stammt bereits vom entfernten Server, d.h., der Connect wird zwar über die angegeben IP auf den Host selbst durchgeführt, der DBS mag von dort aus dann aber nicht auf lo angesprochen werden.
 
Ist mir schon klar was DBI sagt. Aber wieso sollte er auf den Localhost connecten wenn er im Connectionstring die IP hat? Das ist ja das was mich verwirrt.

Code:
my $dbh = DBI->connect("DBI:mysql:database=$dbname; host=$dbhost; port=$dbport", "$dbuser", "$dbpw") or die;

Hier mal der Connectionstring. $dbhost ist eine IP (10.x.x.x), $dbport ist der Standardport (3306) und der Rest ist irrelevant für das Problem hier, aber im String richtig.

Edit
Moranaga schrieb:
Ohne den konkreten Verbindungsweg und den Source zu sehen, läuft es auf Raten hinaus, aber

- entweder ist im Skript noch irgendwo localhost hartkodiert, oder
- die Meldung stammt bereits vom entfernten Server, d.h., der Connect wird zwar über die angegeben IP auf den Host selbst durchgeführt, der DBS mag von dort aus dann aber nicht auf lo angesprochen werden.

Ich hab das Skript auf den Kopf gestellt, da gibt es keinen localhost oder eine entsprechende IP mehr.

Der entfernte Host mag lo, schon getestet mit dem Skript.
 
Zuletzt bearbeitet:
Anderer Lösungsansatz: Bitte DNS und Routing überprüfen, dann via telnet händisch einen Connect auf IP(s) und Port versuchen.
Ist die IP wirklich die richtige (interne) des Ziels, und nicht etwa diejenige, über die der Tunnel aufgebaut wird?
 
Ja, ist die richtig. Alles schon beim Kunden getestet worden. Dessen Admin steht genauso ratlos da wie ich.
 
Also, wenn telnet vom Client auf Ziel-IP und -Port geht, dann kann es eigentlich wirklich nur noch am Skript selbst liegen. Schrittweise debuggen, vielleicht? Ansonsten weiß ich erst einmal keinen Rat mehr. Mich würde aber interessieren, woran es liegt. Wenn sich noch eine Lösung findet, wäre deshalb ein Update nett ...
 
Der verwendete User darf von der IP connecten?
In Heidi wird aber kein SSH Tunnel für die Verbindung verwendet?
 
Zurück
Oben