Zugriff auf mySQL Datenbank auf anderem Pi

  • Hallo zusammen,

    Gibt es eine Möglichkeit, auf die Datenbank eines anderen im Netzwerkbefindlichen Pi zuzugreifen? Bisher hatte ich die angefordertetn Daten über ein php Skript zurückgeben lassen, jedoch wäre mir ein direkter Abruf der Daten am liebsten.
    Gefunden habe ich bisher leider keine hilfreichen Tipps.

    Vielen Dank im Voraus für einen Tipp!

  • Jepp geht und es gibt einige Anleitungen zu dem Thema.
    Wenn du z.B. "mysql Netzwerkzugriff" googelst findest du einiges.
    Grundsätzlich musst du dem Mysql sagen das er den remote Zugriff zulässt - bind-adress ist das Stichwort und du musst innerhalb der Datenbankberechtigungen entsprechende Berechtigungen eintragen.

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Ja, ändere die my.cnf des mysql-Servers dahingehend, dass er auf dem externen Netzwerkdevice bzw. der externen IP lauscht. Dann greifst du vom anderen Rechner mittels

    Code
    mysql -h <ip.des.mysql.servers> -u username -p


    darauf zu.
    Sollte zwischen den beiden Rechnern das Internet oder ein anderes, nicht vertrauenswürdiges Netzwerk liegen, solltest du obiges besser lassen.

    Wenn du nichts zu sagen hast, sag einfach nichts.


  • Sollte zwischen den beiden Rechnern das Internet oder ein anderes, nicht vertrauenswürdiges Netzwerk liegen, solltest du obiges besser lassen.


    Oder zur Sicherheit alles über einen SSH-Tunnel (mit Public Key Auth) laufen lassen. SSH ist vermutlich sowieso auf beiden Pi's aktiv.
    Der Aufruf zur SSH-Verbindung mit Tunnel ist glaube ich (Doku befragen!):
    ssh user@host -L 9884:localhost:3306
    wobei 9884 der Port ist, an dem die Datenbank danach erreichbar ist, localhost der Host aus sicht des anderen Pi, und 3306 der Port am anderen Pi.
    Du kannst dann lokal auf die Datenbank vom anderen Pi über "localhost:9884" zugreifen.

  • Danke für die Infos.
    Der Zugriff über den SSH Tunnel am anderen Pi gefällt mir sehr gut. Muss ich dann hierfür in den MySQL Einstellungen etwas ändern oder eh nicht, nachdem ich ja quasi über SSH auf das andere Pi zugreifen kann?
    Automatisch zusammengefügt:
    Grundsätzlich muss ich von PHP aus auf die andere Datenbank aber ich denke von dem php Skript aus, funktioniert der Aufbau eines SSH Tunnels ja genau so damit ich auf die DB komme oder?

    Einmal editiert, zuletzt von oytschi (26. September 2016 um 19:09)

  • Ne, der SSH-Tunnel sollte nicht von PHP aufgebaut werden, sondern dauerhaft (z. B. in einem screen mit einen Skript, das nach einem Verbindungsabbruch auch die Verbindung wieder neu aufbaut) laufen, sonst kann es passieren, dass falls 2 PHP-Skripte zeitgleich laufen das zweite das Nachsehen hat, der es den Port nicht mehr binden kann. Aber ja, an den MySQL Einstellungen solltest du nichts ändern müssen.

    Einmal editiert, zuletzt von ChrisvA (26. September 2016 um 21:36)

  • ???
    Wenn du dich mit ssh auf den DB-PI verbindest um dann Daten abzugfragen, brauchst du keinen Tunnel und keine remote config auf dem DB-PI einrichten. Völliger Quark.

    Wenn du mit einen wie auch immer geeigenten mysql-client z.B. einer lokalen mysql installation von einem NICHT-DB-PI auf die DB auf dem DB-PI zugreifen willst, dann macht eine Remote Config Sinn. Wenn z.B. auf dem NICHT-DB-PI ein perl/php/python-skript auf die Daten auf dem entfernten DB-PI zugreifen soll. Wenn du z.B. DB und WEB-Server auf 2 unterschiedlichen PI laufen lassen willst - dann macht es Sinn.

    Und wenn du schon meinst du musst den Zugriff verschlüsseln dann nutze doch SSL: https://www.thomas-krenn.com/de/wiki/MySQL_…schl%C3%BCsseln
    Anstatt irgend solch Gemurkse mit ssh tunnel zu basteln.

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Naja es läuft auf beiden Pi's ein Webserver. Der eine ist fürt SmartMirror, der andere vom SmartHome. Jetzt will ich einfach zyklisch Daten vom SmartHome Pi seiner DB abfragen.
    Also doch die Datenbank vom SmartHome Pi extern erreichbar machen, indem ich die MySQL Einstellungen anpasse?

  • Befindest du dich im selben Netzwerk, oder sind die Pi's nur über das Internet miteinander verbunden? Im selben Netzwerk würde ich die DB freigeben, falls die Pi's nur übers Internet verbunden sind, würde ich die Methode des SSH-Tunnels bevorzugen, da der sicherer ist und gar nicht erst aufdeckt, dass am anderen Pi eine öffentlich erreichbare DB sitzt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!