Mit mySQL DB im lokalen Netzwerk über IP verbinden?
Schnaps
- datenbank
Guten Morgen
Wir haben bei uns einen Rechner mit einer laufenden mySQL Datenbank, dieser Rechner ist bei uns im Netzwerk und auch über ssh normal zu erreichen.
Ich möchte mich nun von meinem Rechner mit einem Perl Script mit dieser Datenbank verbinden, über die IP.
Das geht aber leider nicht, User,PW, Datenbank sind alle richtig, es scheitert einfach nur an der Verbindung.
Wir haben auch schon mal zu testzwecken die Firewall aus gemacht, ging aber auch nicht.
Gibt es bestimmte Einstellungen die wir vornehmen müßen?
Oder hat evtl einer eine Anleitung oder einen Artikel wo ich etwas darüber nachlesen kann?
Gruß
Schnaps
Hallo,
Wir haben bei uns einen Rechner mit einer laufenden mySQL Datenbank, dieser Rechner ist bei uns im Netzwerk und auch über ssh normal zu erreichen.
Ich möchte mich nun von meinem Rechner mit einem Perl Script mit dieser Datenbank verbinden, über die IP.
Das geht aber leider nicht, User,PW, Datenbank sind alle richtig, es scheitert einfach nur an der Verbindung.
das glaube ich nicht!
Hast Du irgendwo nmap?
Dann gib mal "nmap -sS <ip-des-hosts> ein.
Siehst Du, ob Port 3306 offen ist?
Wenn ja, dann stimmt wahrscheinlich der User nicht.
Wahrscheinlich hat nur user@localhost Zugriffsrechte. Du brauchst aber auch welche für user@fernrechner oder - wenn Du es Dir einfach machen willst - für user@%
Gruß
Reiner
Es klappt gerade aber nur nicht von allen Rechnern, auf einem anderen Rechner klappt es wenn man sich dort direkt mit mysql Befehlen anmeldet.
Also kann es ja nicht an dem User liegen.
Es klappt gerade aber nur nicht von allen Rechnern, auf einem anderen Rechner klappt es wenn man sich dort direkt mit mysql Befehlen anmeldet.
Also kann es ja nicht an dem User liegen.
Was erwartest Du jetzt?
Ohne ein bischen Quelltext kann Dir dabei keiner helfen.
Gruß
Reiner
Teste gerade mit einem minimal Script:
#!/usr/bin/perl
use strict;
use DBI(); #Datenbank Modul
#################################################################################################
my $host = "134.....";
my $user = "ta....";
my $password = "....";
my $datenbank = "taxa_info";
my $dbh = DBI->connect( "DBI:mysql:$datenbank:$host", $user, $password );
Dabei kann ja nicht so viel falsch sein.
Die Meldung die da raus kommt ist folgende:
DBI connect('taxa_info:134....','ta..r',...) failed: Lost connection to MySQL server during query at ./test.pl line 14
gruß
schnaps
DBI connect('taxa_info:134....','ta..r',...) failed: Lost connection to MySQL server during query at ./test.pl line 14
Das heißt wohl, Du bekommst eine Verbindung, die aber direkt(?) wieder flöten geht.
Wieviele Daten schickst Du denn rüber bzw. mach erstmal ein sehr einfaches select.
Auf was steht denn Dein Timeout von MySQL?
Hast Du mal den Administrator bzw. Query Browser von MySQL ausprobiert und damit vom Client auf der DB rumgefummelt?
Funktioniert das?
Gruß
Reiner
Hi Reiner,
ich hab den Code jetzt um folgende Zeile erweitert.
my $sql="SELECT * FROM taxa
WHERE ";
my $sth = $dbh->prepare($sql);
$sth->execute();
da kommt dann aber die selbe Fehlermeldung.(+ der aussage das prepare() nicht angewendet werden kann, was aber klar ist, da keine verbindung da ist
Hallo schnaps
Hi Reiner,
ich hab den Code jetzt um folgende Zeile erweitert.
my $sql="SELECT * FROM
taxa
WHERE ";
Das ist kein gültiger mySQL Befehl. WHERE was?
Struppi.
ääää, hups da hab ich mich vertippt!!!
natürlich ohne das where, aber ändert nichts an der Fehlermeldung.
Moin!
Teste gerade mit einem minimal Script:
Das Skript ist vollkommen ausreichend.
my $dbh = DBI->connect( "DBI:mysql:$datenbank:$host", $user, $password );
DBI connect('taxa_info:134....','ta..r',...) failed: Lost connection to MySQL server during query at ./test.pl line 14
Dein Skript kann den DB-Server nicht erreichen. Warum das so ist, ist jetzt zu erforschen.
Also erstmal die Basics:
1. Kannst du von deinem Rechner aus den DB-Server mit PING erreichen?
2. Hat der DB-Server TCP-Konnektivität aktiviert? Ist dort also Port 3306 offen und generell erreichbar (das kann man nämlich auch abschalten)?
3. Funkt eventuell eine Firewall auf dem DB-Server oder auf deinem Client dazwischen?