Externer Zugriff auf eine MySQL-Datenbank

  • Hallo,


    ich versuche meine MySQL-Datenbank nach außen erreichbar zumachen.Aber leider bekomme ich immer als Ausgabe "No Server Connection".

    ich habe in der "my.cnf" den Eintrag "bind-adress = server-ip" eingegeben.
    bind-address = server-ip
    bind-address = 127.0.0.1


    und dann vom phpmyadmin habe ich noch zwei user erstellt.


    root 127.0.0.1 ALL PRIVILEGES
    root server-ip ALL PRIVILEGES
    root localhost ALL PRIVILEGES
    root v......yourvserver.net ALL PRIVILEGES


    --PHP File
    <?php
    $dbhost="v.......yourvserver.net";
    $dbuser="root";
    $dbpassword="rootpass";
    $datenbank="dbname";


    $serverconnection=@mysql_connect($dbhost,$dbuser,$dbpassword);


    if (!$serverconnection) die("No Server Connection");


    @mysql_select_db($datenbank,$serverconnection) or die("No Datenbak Connection");
    ?>


    soviel ich gelesen habe,sollte es so funktionieren.Aber geht leider nicht.Könnte jemand mir bitte sagen,wo mein Fehler liegt ?

  • Wenn die bind IP angepasst ist und der Dienst neu gestartet wurde mit

    Code
    netstat -tulpen

    prüfen, ob der Dienst auch wirklich auf der öffentlichen IP horcht.


    Dann muss als Host im MySQL Benutzer immer die IP / der Reverse DNS angegeben werden, von der/dem connected wird. Sprich die IP von dem Server, wo Du das PHP Script einsetzt. Wenn Du Änderungen direkt in der Datenbank "mysql vornimmst,

    Code
    FLUSH PRIVILEGES

    nicht vergessen!

  • Hallo!

    Mit

    Code
    bind-address = 0.0.0.0

    sollte es klappen.


    Warum nicht einfach nur komplett auskommentieren?

    Code
    #bind-address = 127.0.0.1


    MySQL Port in der Firewall freigeschaltet?


    Und ich würde nicht den Root User verwenden.
    Hier ein Beispiel, wie einem bestehenden User 'DB-User' der Zugriff von extern ermöglich werden kann:

    Code
    mysql -uroot -p mysql
    #root-Passwort eingeben
    update user set host='%' where user='DB-User';
    update db set host='%' where user='DB-User';
    flush privileges;
    exit;


    Gruß
    Gunther


  • Aus Sicherheitsgründen immer explizit den Host angeben.


    Da hast du natürlich Recht. :)
    Nur zum "Testen", bzw. Einrichten räume ich immer gerne erstmal alle möglichen "Stolpersteine" aus dem Weg. ;)
    Und wenn's klappt, dann Schritt für Schritt "sicher" machen. So findet man ggf. einfacher die Stelle, wo es "klemmt".


    PS: Wenn ich gewusst hätte, dass ihm schon ein Profi hilft, hätte ich gar nicht mehr gepostet. :P

  • Aber nur der Host reicht ja nicht in allen Fällen.


    Wenn z.B. mehrere Personen von unterschiedlichen IP's drauf zugreifen sollen.


    Sollte aber bei einer einzelnen Datenbank mit sicherem Passwort wohl nicht so dramatisch sein.


    Im Regelfall stimmt das aber natürlich schon.