MySQL "nur lokale Verbindungen zulassen" nicht möglich

  • Hallo zusammen!


    Webhosting 4000,

    ich habe ein Verständnisproblem: ich kann meinem Joomla keinen Zugang zur Datenbank beschaffen, wenn ich die Option "nur lokale Verbindungen zulassen" in den Datenbankbenutzer Einstellungen setze. Ist das korrekt so? Ich habe auch versucht meine Domain unter "Remoteverbindungen zulassen von:" einzutragen, was ebenfalls keinen Erfolg hatte.

    Im Wiki zeigt der Screenshot die Option "Remoteverbindungen von beliebigem Host zulassen", aber es wird nichts näher dazu erklärt. Ich kann mir nicht vorstellen, dass das nicht optional ist.

    Mit php_myadmin kann ich dann übrigens auch nicht zugreifen.


    Vielen Dank für eure Antworten im Voraus.

    Grüße Marc :)

  • Moin,


    die Datenbanken laufen auf anderen Servern als die Webserver.


    Deswegen gehen nur lokale Verbindungen nicht.


    Um den Zugang einzuschränken, müsstest du die Netcup Interne IP des Webservers auf dem Datenbankserver erlauben.


    Oder eben alles erlauben, aber das stellt nicht wirklich eine Alternative dar.....hoffe ich :)

  • Um den Zugang einzuschränken, müsstest du die Netcup Interne IP des Webservers auf dem Datenbankserver erlauben.


    Oder eben alles erlauben, aber das stellt nicht wirklich eine Alternative dar.....hoffe ich :)

    Moin Caspar


    Ja genau! Ich finde die Alternative halt blöd. :)

    Vielen Dank für Deine Antwort. Leider habe ich keine Ahnung, wie ich meine interne IP herausfinden soll. Im CCP habe ich nichts gefunden. Ich verstehe dich richtig, dass es sich hierbei um irgendeine 10.xx.xx.xx handelt, oder? Ich habe einfach mal ausprobiert und sowohl die interne von der Datenbank als auch meine externe 188.xx.xx.xx eingetragen - nüscht.


    Viele Grüße

    Marc

  • Ich verstehe dich richtig, dass es sich hierbei um irgendeine 10.xx.xx.xx handelt, oder?

    Ja, diese Adresse ist gemeint.

    Hast du denn auch die interne IP des SQL Servers zum verbinden verwendet?

    Wenn du die ext. IP des SQL Servers zum verbinden verwendest, bringt es nichts, die interne IP des webservers zu erlauben.

    Meine (Netcup) Produkte: S 1000 G7, VPS 200 G8 Ostern 2019, IPs, Failover..

  • die interne IP des SQL Servers findest du im CCP, wenn du unter Produkte dein Webhosting ausklappst ganz oben im Reiter Übersicht. Da steht dann MySQL Server mit externer und interner IP.

    Ja, aber das ist - wie Du ja sagst - die interne IP vom MySQL-Server nicht von meinem Web-Server, oder?

    Ja, diese Adresse ist gemeint.

    Hast du denn auch die interne IP des SQL Servers zum verbinden verwendet?

    Wenn du die ext. IP des SQL Servers zum verbinden verwendest, bringt es nichts, die interne IP des webservers zu erlauben.

    Ja, ich habe die interne IP des SQL Servers verwendet incl. Port. Das hatte mich noch etwas gewundert, weil ich sonst mit 'localhost' eigentlich klar kam.

    Mein Problem ist also immer noch, woher ich die interne IP meines Web-Servers bekomme, sehe ich das richtig?


    Viele Grüße und Danke

    Marc

  • Das hatte mich noch etwas gewundert, weil ich sonst mit 'localhost' eigentlich klar kam.

    Das geht nur, wenn der SQL Server auf dem gleichen System läuft, wie der Webserver. Bei Netcup sind das aber getrennte Systeme.


    Mein Problem ist also immer noch, woher ich die interne IP meines Web-Servers bekomme, sehe ich das richtig?

    So sehe ich das auch. Ich habe allerdings selbst keine Webhosting. Da kann ein anderer Webhosting Kunde eher weiter helfen.

    Möglicherweise haben die das alle nach Anleitung gemacht und die Verbindung von überall erlaubt.


    Andere Möglichkeit:

    Verwendet die externe Adresse des SQL servers und erlaube der externen Adresse des Webservers zugriff.

    Meine (Netcup) Produkte: S 1000 G7, VPS 200 G8 Ostern 2019, IPs, Failover..

  • Okay, ich habe das Problem gelöst, allerdings nur mit 'raten'

    Ich habe das letzte Byte meiner externen Web-Server IP genommen und es als das letzte Byte der internen MySQL-Server IP gesetzt.

    Diese IP eingetragen unter "Remoteverbindungen zulassen von" - klappt.


    Vielen Dank für eure netten Antworten und eure Zeit.:)

  • Das geht nur, wenn der SQL Server auf dem gleichen System läuft, wie der Webserver. Bei Netcup sind das aber getrennte Systeme.

    Das ist nicht richtig. Der Begriff localhost löst im PHP-Kontext nicht auf 127.0.0.1 auf und stellt dann eine TCP-Verbindung her, sondern auf den in der php.ini festgelegten Default-Socket. Und das kann ein "virtueller" Socket sein, der eine externe TCP-Verbindung herstellt. So ist es (zumindest gefühlt) bei den meisten Webhostern mit getrennten Systemen konfiguriert.


    An die Client-IP (aus Sicht des MySQL-Servers) müsste man über eine Abfrage der process-infos rankommen. Dass dein User dazu jedoch die notwendigen Berechtigungen hat ist unwahrscheinlich:

    Code
    /* # von https://stackoverflow.com/questions/6263453/retrieve-client-ip-address-in-mysql */
    select host from information_schema.processlist WHERE ID=connection_id();

    Des weiteren setzt das voraus, dass es keinen MySQL-Reverse-Proxy o.ä. gibt, der in der Verbindung vom Webhosting zum MySQL-Server hängt (so ist es bei mir der Fall).


    Man kann übrigens soweit ich weiß in Plesk auch Hostnamen mit Platzhaltern eintragen. Also zumindest auf %.netcup.de o.ä. beschränken.

  • Das ist nicht richtig. Der Begriff localhost löst im PHP-Kontext nicht auf 127.0.0.1 auf und stellt dann eine TCP-Verbindung her, sondern auf den in der php.ini festgelegten Default-Socket. Und das kann ein "virtueller" Socket sein, der eine externe TCP-Verbindung herstellt. So ist es (zumindest gefühlt) bei den meisten Webhostern mit getrennten Systemen konfiguriert.


    Was dafür sprechen würde, dass ich dann doch "localhost" in der Joomla-Config eintragen könnte, habe ich das richtig verstanden?


    An die Client-IP (aus Sicht des MySQL-Servers) müsste man über eine Abfrage der process-infos rankommen. Dass dein User dazu jedoch die notwendigen Berechtigungen hat ist unwahrscheinlich:

    Code
    /* # von https://stackoverflow.com/questions/6263453/retrieve-client-ip-address-in-mysql */
    select host from information_schema.processlist WHERE ID=connection_id();

    Des weiteren setzt das voraus, dass es keinen MySQL-Reverse-Proxy o.ä. gibt, der in der Verbindung vom Webhosting zum MySQL-Server hängt (so ist es bei mir der Fall).


    Ja, ich denke dazu ist der User nicht berechtigt. Ich sehe diese Tabelle nicht mal.


    Man kann übrigens soweit ich weiß in Plesk auch Hostnamen mit Platzhaltern eintragen. Also zumindest auf %.netcup.de o.ä. beschränken.


    Ja, das hatte ich gesehen, aber das wäre dann auch wieder extern, oder?


    Viele Grüße Marc

  • Was dafür sprechen würde, dass ich dann doch "localhost" in der Joomla-Config eintragen könnte, habe ich das richtig verstanden?

    Es ist auf jeden Fall "schneller" (theoretisch) direkt die IP zu nehmen. Da der eventuell existierende "virtuelle" Socket via localhost das gleiche tut, aber ein Zwischenschritt mehr ist.

    Außerdem weiß ich nicht, ob netcup das auch so konfiguriert hat, dass localhost klappt.


    Ja, das hatte ich gesehen, aber das wäre dann auch wieder extern, oder?

    Ja, das hätte zumindest nur auf nc-Server beschränkt, aber du hast ja eine bessere Lösung in der Zwischenzeit gefunden :)

  • Okay, ich habe das Problem gelöst, allerdings nur mit 'raten'

    Ich habe das letzte Byte meiner externen Web-Server IP genommen und es als das letzte Byte der internen MySQL-Server IP gesetzt.

    Diese IP eingetragen unter "Remoteverbindungen zulassen von" - klappt.


    Vielen Dank für eure netten Antworten und eure Zeit.:)

    Hallo, ich stehe gerade vor dem selben Problem, verstehe aber die Lösung nicht.


    Damit ich externen Datenbank-Zugriff verhindern kann, soll ich die letzten 8 Ziffern meiner Webserver-IP in das Feld "Remoteverbindungen zulassen von" der Datenbankeinstellungen eintragen? Funktioniert nicht. Dann ist die Datenbank gar nicht mehr erreichbar.


    Wer kann mir helfen?

  • Du musst schon die komplette IP des Webservers eintragen. Um hierbei die interne IP zu nutzen, musst du eben die interne IP des Webservers wissen. Diese wird ja im CCP beim entsprechenden Hostingpaket leider nicht angezeigt. Allerdings steht da im Reiter "Übersicht" unter "Globale Verwaltung ..." in der Zeile MySQL-Server ganz hinten die interne IP des MySQL-Servers. Die interne IP des Webservers bekommst du, indem du bei der letzten Zahl der internen IP des MySQL-Servers einfach 1 abziehst.


    Beispiel:

    Interne IP MySQL-Server: 10.35.46.71

    Interne IP Webserver: 10.35.46.70


    In diesem Beispiel müsstest du also unter "Remoteverbindungen zulassen von" eintragen: 10.35.46.70

  • Hallo Forum,

    Okay, ich habe das Problem gelöst, allerdings nur mit 'raten'

    Ich habe das letzte Byte meiner externen Web-Server IP genommen und es als das letzte Byte der internen MySQL-Server IP gesetzt.

    Diese IP eingetragen unter "Remoteverbindungen zulassen von" - klappt.


    Vielen Dank für eure netten Antworten und eure Zeit.:)

    Im phpMyAdmin wird oben links die Server-IP des Datenbank-Servers angezeigt. Ein Klick darauf führt zur Anzeige diverser Informationen, unter anderem kann man hier (bei "Datenbank-Server") den DB-Benutzer im Format Benutzername@DB-Server-IP" ablesen. So findet man die IP des die Datenbank benutzenden Webservers ohne Raten und auch dann heraus, wenn sie nicht eine direkt benachbarte der IP des DB-Servers ist.


    Ralf

  • Ja, das klappt. Muss man eben die Datenbank (bzw den Benutzer) erst kurz für externe Verbindungen freigeben und dann nachträglich ändern. Oder phpMyAdmin für eine bereits bestehende Datenbank aufrufen. Noch besser wäre freilich, wenn die interne IP gleich im CCP mit angezeigt würde. Dann müsste man keine Klimmzüge machen um etwas herauszufinden was man ja tatsächlich braucht, wenn man die DB nicht für externe IPs freigeben will. Was man aus Sicherheitsgründen auch nicht tun sollte. Den Namen des Webservers anzugeben klappt ja entgegen den Beispielen im Plesk nicht, weil hier aus Performancegründen keine Namensauflösung stattfindet.

  • Die interne IP des Webservers kann man doch genauso umrechnen, wie beim DB-Server? Oder verstehe ich da etwas nicht? Und die öffentliche IPv4-Adresse des Webservers kennt man ja, um sie umzurechnen.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Das Feld "Allow remote connections from" im WPC erlaubt Wildcards,

    Eine alternativer Weg wäre daher, die IPv4 des Datenbankservers zu nehmen und an der letzten Stelle ein % einzufügen:

    10.y.z.%

    reicht das nicht, geht auch 10.y.% - womit man aber mehr erlaubt - da das aber der Private Adressbereich ist, dürfte das die immer noch besser sein, als "Allow remote connections from any host". Auserdem ist man etwas mehr unanhängig von möglichen IPv4 Änderungen bei netcup.