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

Creeed

Captain
Dabei seit
Sep. 2002
Beiträge
3.488
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...
 

Multivitamin

Banned
Dabei seit
Feb. 2012
Beiträge
2.168
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
 

Creeed

Captain
Ersteller dieses Themas
Dabei seit
Sep. 2002
Beiträge
3.488
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.
 

Multivitamin

Banned
Dabei seit
Feb. 2012
Beiträge
2.168
da sagt dbi aber was anderes , und ich glaube kaum , dass die fehlermeldung falsche werte ausspuckt...
 

Moranaga

Cadet 4th Year
Dabei seit
Okt. 2008
Beiträge
101
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.
 

Creeed

Captain
Ersteller dieses Themas
Dabei seit
Sep. 2002
Beiträge
3.488
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
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:

Moranaga

Cadet 4th Year
Dabei seit
Okt. 2008
Beiträge
101
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?
 

Creeed

Captain
Ersteller dieses Themas
Dabei seit
Sep. 2002
Beiträge
3.488
Ja, ist die richtig. Alles schon beim Kunden getestet worden. Dessen Admin steht genauso ratlos da wie ich.
 

Moranaga

Cadet 4th Year
Dabei seit
Okt. 2008
Beiträge
101
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 ...
 

beig1

Cadet 4th Year
Dabei seit
Feb. 2009
Beiträge
109
Der verwendete User darf von der IP connecten?
In Heidi wird aber kein SSH Tunnel für die Verbindung verwendet?
 
Top