Zugriff auf externe MySQL-DB
Bahamut
- datenbank
Guten Morgen zusammen!
Ich probiere inzwischen seit mehreren Tagen ein Problem in den Griff zu bekommen, habe google ausführlich bemüht, aber leider nichts gefunden was mir weitergeholfen hätte. Da ich hier schon öfters äußerst kompetent beraten wurde wollte ich nun abermals mein Glück hier versuchen.
Folgende Grundinformationen: Ich habe bei 2 verschiedenen Anbieter Serverplatz gemietet. Einerseits einen Webserver wo ich meine Websites, E-Mails, Datenbanken, etc. verwalter und andererseits einen Gameserver der auch nur für dieses eine Game gedacht ist.
Nun habe ich folgendes Problem: Ich wollte eine Website für dieses Spiel erstellen und dort verschiedene Statistiken bereitstellen die direkt aus dem Spiel ausgelesen werden. Dafür habe ich ein Plugin in das Spiel integriert welches verschiedene Aktionen direkt in eine Datenbank spielt (Nein, das Plugin ist nicht von mir, sondern wird von vielen verschiedenen Leuten erfolgreich genutzt. Ein Programmierfehler ist dementsprechend ausgeschlossen). Dies basiert auf Java (sollte das irgendwie relevant sein).
Ich wollte diese Daten direkt vom Spiel (welches auf dem Gameserver läuft in eine Datenbank auf meinem anderen Server (Webserver) einspielen.
Dabei kommt es zu folgender Fehlermeldung:
2012-03-21 13:17:11 [INFO] [Statistician] Loading Statistician v2.0.7.
2012-03-21 13:18:15 [SEVERE] [Statistician] Critical Error, could not
connect to mySQL. Is the database Available? Check config file and try
again. (com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
Sobald ich allerdings die DB des Gameservers selbst auswähle (localhost) funktioniert alles einwandfrei.
Ich habe sowohl bei meinem Webserveranbieter als auch bei meinem Gameserveranbieter angefragt und von beiden Seiten kam "Der Code ist richtig, alles ist freigeschalten, muss funktionieren".
Die Zugangsdaten sind 100% richtig, da von anderer Seite getestet und funktionsfähig.
Hätte jemand einen Lösungsansatz?
Vielen Dank im Vorraus!
Bahamut
Tach!
Hätte jemand einen Lösungsansatz?
Es kann am Netzwerk liegen, dass eine Firewall die Zugriffe auf dem MySQL-Port (Default: 3389) nicht durchlässt. Damit könnten zumindest alle Rechner hinter der Firewall auf den MySQL-Server zugreifen
Weiterhin kann auch MySQL selbst so konfiguriert sein, dass Zugriffe über das Netzwerk generell nicht angenommen werden. In dem Fall bindet sich MySQL nur an das lokale Loopback-Interface und nicht an das physikalische zum Netzwerk. ("bindet sich an" bedeutet "lauscht nur am ... auf Requests") Oder aber Netzwerken ist generell unterbunden, dann gehen nur Verbindungen über Unix-Sockets auf der lokalen Maschine. Das läst sich jedenfalls in der globalen Konfiguration von MySQL (my.cnf) einstellen.
Dass Netzwerkzugriffe unterbunden werden, ist ein übliches Vorgehen, damit der MySQL-Server weniger Angriffsfläche bietet. In dem Fall wirst du nichts machen können, wenn du nicht der Administrator der betreffenden Systeme bist.
Und zu guter Letzt können auch noch die Berechtigungen nicht ausreichend sein. Das erwähne ich nur der Vollständigkeit, denn deine Fehlermeldung lässt darauf schließen, dass es gar nicht bis zu dieser Stelle kommt.
dedlfix.
Hallo dedlfix!
Da ich den Webserver nur bei einem Hoster beziehe habe ich keinen direkten Zugriff auf die Datenbanken respektive die Berechtigungen oder Config-Seiten.
Ich habe allerdings bereits meinen Hoster darum gebeten mir den Zugriff von extern freizuschalten. Dies hat er getan und nach nochmaliger Rückfrage auch von extern getestet und es ist angeblich alles funktionsfähig.
Insofern sollte ein Zugriff doch möglich sein?
An den Berechtigungen kann es nicht scheitern, da ich für die Verbindung den User nehme den ich selbst für den Zustieg zur DB nutze.
Das einzige was mir im Moment auffällt, ist, dass meine Applikation versucht über den Port 3306 zuzugreifen. Auch mein Hoster hat mir den Port 3306 als Standard-MySQL-Port freigeschalten. Allerdings nur für die IP unter der der Gameserver erreichbar ist.
IP richtig, Berechtigungen eingestellt, Firewall konfiguriert, Applikation richtig...und trotzdem bekomme ich keine Verbindung zustande...ein Kramp. :-(
Vielen Dank dennoch!
Bahamut
Hallo,
Ich habe allerdings bereits meinen Hoster darum gebeten mir den Zugriff von extern freizuschalten. Dies hat er getan und nach nochmaliger Rückfrage auch von extern getestet und es ist angeblich alles funktionsfähig.
Insofern sollte ein Zugriff doch möglich sein?
An den Berechtigungen kann es nicht scheitern, da ich für die Verbindung den User nehme den ich selbst für den Zustieg zur DB nutze.
es könnte sein, dass für den verwendeten User eingestellt ist, dass dieser nur von lokal Zugriff hat.
Weißt du mit Sicherheit, dass dein Webserver Verbindungen zu externen Datenbanken zulässt? das Problem hatte ich nämlich auch mal.
Viele grüße,
Tim
Hallo Tim!
Nein, nein, nicht falsch verstehen. Ich möchte nicht dass mein Webserver Verbindungen zu externen Datenbanken zulässt (Das höchstens als Notfallsszenario), sondern dass die Applikation von extern auf meine Datenbank zugreifen kann.
Hm, mir würde nur noch einfallen mal von einem anderen Webspace aus eine Verbindung zur DB herzustellen. Blöd, dass ich keinen zur Verfügung habe.
Da muss ich mir mal was überlegen...
Tach!
Das einzige was mir im Moment auffällt, ist, dass meine Applikation versucht über den Port 3306 zuzugreifen. Auch mein Hoster hat mir den Port 3306 als Standard-MySQL-Port freigeschalten. Allerdings nur für die IP unter der der Gameserver erreichbar ist.
3306 ist richtig, 3389 war was anderes. Mein Fehler.
IP richtig, Berechtigungen eingestellt, Firewall konfiguriert, Applikation richtig...und trotzdem bekomme ich keine Verbindung zustande...ein Kramp. :-(
Die Fehlermeldung ist relativ unspezifisch. Üblicherweise gibt die MySQL-API deutlich aussagekräftigere Texte aus. Man kann da also auch nur recht unspezifisch raten.
dedlfix.
Hallo dedlfix!
Die Fehlermeldung ist relativ unspezifisch. Üblicherweise gibt die MySQL-API deutlich aussagekräftigere Texte aus. Man kann da also auch nur recht unspezifisch raten.
Das ist leider wahr. Die Frage ist: Wie soll ich dieses Problem am Besten angehen? Ich habe inzwischen versucht einfach die lokale DB des Gameservers zu nutzen und von meinem Webserver aus auf diese zuzugreifen, doch auch dies funktioniert nicht. Trotz richtiger Konfiguration bekomme ich:
Warning: mysql_connect() [function.mysql-connect]: [2002] Connection timed out (trying to connect via tcp://<IP des Servers>:3306) in /<XY>/connect.php on line 5
Warning: mysql_connect() [function.mysql-connect]: Connection timed out in /<XY>/connect.php on line 5
Verbindung fehlgeschlagen wegen: Connection timed out
Tach!
Warning: mysql_connect() [function.mysql-connect]: [2002] Connection timed out (trying to connect via tcp://<IP des Servers>:3306) in /<XY>/connect.php on line 5
Das sieht wenigstens so aus, als ob der Server nicht antwortet und der Verbindungsversuch ins Leere geht, also vermutlich irgendwas mit Netzwerk oder der Netzwerkkonfiguration MySQLs. Probier wenigstens mal von derselben Maschine aus beim Verbinden localhost:3306 zu verwenden, dann sollte MySQL explizit die TCP/IP-Verbindung nehmen und keinen Unix-Socket. Damit weißt du dann, ob der MySQL-Server prinzipiell auf Netzwerkanfragen reagiert. Wenn ja, liegt der Fehler doch in der restlichen Netzwerkkonfiguration.
dedlfix.
Hello,
Es kann am Netzwerk liegen, dass eine Firewall die Zugriffe auf dem MySQL-Port (Default: 3389) nicht durchlässt. Damit könnten zumindest alle Rechner hinter der Firewall auf den MySQL-Server zugreifen
War das nicht Port 3306?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
Es kann am Netzwerk liegen, dass eine Firewall die Zugriffe auf dem MySQL-Port (Default: 3389) nicht durchlässt.
War das nicht Port 3306?
dedlfix.
Hello,
Es kann am Netzwerk liegen, dass eine Firewall die Zugriffe auf dem MySQL-Port (Default: 3389) nicht durchlässt.
War das nicht Port 3306?
Ja. Tschuldigung bitte. Dass Du dich selbst korrigiert hattest, habe ich auch erst gesehen, als ich meine Mitteilung schon abgeschickt hatte.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Dabei kommt es zu folgender Fehlermeldung:
2012-03-21 13:18:15 [SEVERE] [Statistician] Critical Error, could not
connect to mySQL. Is the database Available? Check config file and try
again. (com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
Passt die MySQL-Client-API zur MySQL-Datenbank?
Wenn die DB verschlüsseltes Anmeldeverfahren/Passwortübergabe zwingend verlangt, muss der Cleint das auch können. Je nach Einstellung ist ggf. auch noch das unverschlüsselte Verfahren möglich. Das muss der Client dann aber mitteilen. Ich würde allerdings davon abraten und lieber die MySQL-API updaten.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
Passt die MySQL-Client-API zur MySQL-Datenbank?
Hast du in letzter Zeit damit noch Probleme gehabt? Meiner Erfahrung nach ist das keine zwingende Voraussetzung. Die Versionsnummernunterschiede an dritter Stelle sind unerheblich. Die an zweiter Stelle sollten auch kein Problem sein. Ich bin geneigt zu sagen, seit der Umstellung auf langes Passwort (Version 4.1) sollten alle Client-Versionen (>= 4.1) alle Serverversionen erreichen können.
dedlfix.
Hello,
Passt die MySQL-Client-API zur MySQL-Datenbank?
Hast du in letzter Zeit damit noch Probleme gehabt? Meiner Erfahrung nach ist das keine zwingende Voraussetzung. Die Versionsnummernunterschiede an dritter Stelle sind unerheblich. Die an zweiter Stelle sollten auch kein Problem sein. Ich bin geneigt zu sagen, seit der Umstellung auf langes Passwort (Version 4.1) sollten alle Client-Versionen (>= 4.1) alle Serverversionen erreichen können.
Ich hatte Probleme, von meinem alten Multiplatinen-PC (WinXP Pro, Xampp) den MySQL-Server aus der Contao-Installation auf meinem Notebook (Debian 6.0, ganz aktuelle Softwareversionen) zu erreichen. Nachdem ich dann auf dem WinXP die ältere Xampp-Version neu installiert habe (die neueste lief nicht) und damit wieder MySQL 5.1.33-community drauf hatte, ging es wieder.
Welche MySQL-PHP-API nun dazugehört, weiß ich nicht...
Irgendwas scheint da schon faul zu sein. Ich hatte aber bisher weder Zeit noch Lust, das genauer zu untersuchen. Scheint aber nitwendig zu sein.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg