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: VPS 1000 G7 SE, 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: VPS 1000 G7 SE, 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
    1. /* # von https://stackoverflow.com/questions/6263453/retrieve-client-ip-address-in-mysql */
    2. 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
    1. /* # von https://stackoverflow.com/questions/6263453/retrieve-client-ip-address-in-mysql */
    2. 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 :)