PHP keine Verbindung zu externem MySQL Server

Dr.ChAoS

New Member
Hi alle zusammen,

Ich wusste jetzt nicht genau wo ich es posten soll, weil ich nicht genau weiß wo das Problem liegt.
Also mein Problem ist dass ich mit meinem Script welches ich geschrieben habe nicht mehr auf meine externe MySQL Datenbank zugreifen kann. Beim Versuch zur Datenbank zu verbinden bekomme ich diesen Fehler:

Code:
Can't connect to MySQL server on '*.*.*.*' (4)
(IP Adresse Zensiert)

Wenn ich allerdings ganz klassisch über die Konsole von meinem PC zu der Datenbank auf dem Server verbinde, geht das ohne Probleme. Gerade eben habe ich auch noch getestet ob ich von meinem PC mit PHP auf die externe Datenbank connecten kann - es ging auch ohne Probleme.

Kann das jetzt an einer Einstellung in der php.ini liegen, oder habt ihr sonst eine Idee?

Vielen Dank schonmal.

MfG
Dr.ChAoS
 
Last edited by a moderator:
Verstehe ich es richtig, dass auf deinem HeimPC ein PHP-Script läuft, womit du dich auf die Datenbank auf einem Server verbinden willst, was auch über die Shell funktioniert?

Es gibt in der php.ini eine einstellung für den Port von Mysql. Dieser kann auch leer sein, dann holt sich Mysql den Port irgendwo aus dem System her. Ist dieser im system aber nicht sauber gesetzt, bekommt PHP den falschen Port vorgegaukelt. Ich würde mal den port in der php.ini für Mysql setzten. Wenn du die Mysqli Schnittstelle verwendest, musst du das eben für Mysqli machen. Mysql und Mysqli sind zwei verschiedene Erweiterungen
 
Ok, war ein bisschen durcheinander geschrieben. Hier nochmal ausführlich:

Auf Server1 läuft das Script welches zur Datenbank auf Server2 verbinden will.
Bei dem Versuch zu verbinden kommt dann der oben genannte Fehler.

Wenn ich von meinem Home PC versuche zur Datenbank auf dem Server2 zu verbinden klappt das sowohl per Konsole als auch per PHP Script.

Hier mein kleines Test Script mit welchem ich die Verbindung teste:

PHP:
<?php
    $host = "*.*.*.*:3306";
    $user = "user";
    $pass = "passwort";
    $db   = "datenbank";

    @mysql_connect($host,$user,$pass) or die("MySQL ERROR:<br />".mysql_error());
    @mysql_select_db($db) or die("MySQL ERROR:<br />".mysql_error());
    
    echo "connected...";
?>

MfG

Dr.ChAoS
 
Okay:
anscheinend ist es so, dass der Mysql-Server Verbindung von aussen zulässt. Mit dem Port solltest du auch kein Problem bekommen, da du ihn ja explizit angibst. Also stellt sich für mich noch die Frage nach einer Firewall, die den Port 3306 auf dem PHP-Server sperrt.
Kannst du denn von der Shell PHP-Servers auf die Datenbank des anderen Servers zugreiffen?
 
[OT]
(IP Adresse Zensiert)
Warum zensiert Du die IP-Adresse? Sicherer wird die ganze Geschichte dadurch nicht!

Du solltest den MySQL-Server nach Möglichkeit so konfigurieren, dass er nur an lokalhost gebunden ist. Dann richtest Du auf den Rechnern, die auf den MySQL-Dienst zugreifen müssen einen SSH-Tunnel auf den Server ein. Wie das geht, verrät Dir die Foren-Suchfunktion.
[/OT]
 
Es ist in meinem Fall unumgänglich extern auf die MySQL Datenbank zugreifen zu können. Leider muss ich es so "unsicher" ohne SSH Tunnel machen da das eine mein Root Server (Die Datenbank) und das andere nur ein Webspace (Script) ist an dem ich nichts verändern kann.

Die IP Adresse habe ich deshalb zensiert weil mein Projekt schon genug unter DDoS Attacken leidet und ich auf diesem Server nicht auch noch welche brauchen kann.
MfG
Dr.ChAoS
 
Irgendwie glaub ich, dass man eine Verbindung zwischen client und Mysql-Server auch über SSL etablieren kann. Das sollte eigentlich bei deinem Webspace dann auch möglich sein.
 
Zumindest sollte es möglich sein, den Zugang zur Datenbank auf eine Quell-IP zu beschränken. Entweder im MySQL selbst oder mit einer vorgeschalteten Firewall-Regel. So oft wird sich die IP von Deinem Webspace ja nicht ändern.
 
Vielen Dank an alle die geholfen haben ;)
Nachdem ich mit dem Hoster geredet habe hat der den Port freigeschaltet. Daran hats gelegen.
Ich frage mich nur warum man man Verbindungen nach außen über den MySQL Port sperrt.

MfG

Dr.ChAoS
 
Last edited by a moderator:
Back
Top