MySQL

Raspberry Pi

Hier zeige ich euch wie ihr auf dem Raspberry Pi eine MySQL Datenbank anlegt und diese mittels Konsole oder PHP verwalten könnt.
Diese Datenbanken könnt ihr dann zum Speichern vieler verschiedener Daten verwenden (z.B. Geburtstage, Sensorwerte o.ä.).

-> Was ist eine Datenbank?:

Was genau muss man sich unter einer Datenbank vorstellen?
Eine Datenbank ist eine Datei, in der viele verschiedene Daten tabellarisch gespeichert sind.
Die Datei kann man sich vom Aufbau her wie ein Excel-Dokument vorstellen.
Eine Datenbank besitzt Felder und Spalten und diese können mit Daten gefüttert werden, um so Daten strukturiert speichern zu können.
Eine einfache Datenbank kann dann z.B. so aussehen (hier werden fiktive Kontaktdaten verwaltet):

Excel_Datenbank

Diese Tabelle stellt unsere Rohdatenbank dar, welche aus 5 Spalten und 5 Feldern besteht und mittels Excel erstellt wurde.
Ich möchte euch zeigen wie ihr diese Exceltabelle in eine MySQL Datenbank übertragt und diese Datenbank anschließend per PHP ausgebt.

-> MySQL auf dem Raspberry Pi:

Als erstes installiert ihr die notwendige Software:

Dadurch installiert ihr eine MySQL Server- und eine Clientsoftware, sowie eine Software damit PHP mit MySQL Datenbanken umgehen kann.
Nach der Installation müsst ihr euer Raspberry Pi mittels

neu starten. Nach einem erfolgreichen Neustart könnt ihr mit euern ersten Versuchen an einer MySQL Datenbank anfangen.

-> MySQL in der Konsole:

Die ersten Versuche mit einer MySQL Datenbank habe ich in der Konsole vorgenommen.
Dadurch konnte ich bereits die ein oder andere Erfahrung im Umgang mit einer Datenbank sammeln.
Dies ist ganz hilfreich um später einen Zugriff über PHP zu realsieren, da der PHP Zugriff fast genauso abläuft wie der Zugriff über die Konsole.
Nach dem Öffnen der Konsole könnt ihr euch mittels

als User „root“ anmelden.
Hierfür wird das Passwort benötigt, welches ihr bei der Installation von MySQL angegeben habt.
Wenn die Anmeldung erfolgreich war „verlasst“ ihr die Konsole des Betriebssystems und kommuniziert direkt mit MySQL.
Dies erkennt ihr an dem Prompt

Um diesen Modus zu verlassen, müsst ihr die Tastenkombination Strg + C verwenden oder quit eingeben.
Der erste Schritt besteht in dem erstellen einer Datenbank.
Diese Datenbank wollen wir Kontaktdaten nennen:

Mit dem Befehl

könnt ihr euch alle vorhandenen MySQL Datenbanken anzeigen lassen.
Da wir anschließend mit der Datenbank arbeiten wollen, müssen wir diese auswählen:

Jetzt ist die Datenbank erstellt und ausgewählt.
Diese Datenbank kann man sich nun vereinfacht wie ein Excel Dokument ohne Tabelle vorstellen. Um Daten in einer Datenbank speichern zu können benötigen wir also erst einmal eine Tabelle.
Eine neue Tabelle wird wie folgt angelegt:

Unsere Tabelle benötigt 5 Spalten mit den Namen Nummer, Vorname, Nachname, Stadt  und Geburtstag. Den Namen der Tabelle legen wir mit „Persönlich“ fest.
Dementsprechend lautet die Syntax für die Tabelle wie folgt:

Nachdem die Tabelle erstellt wurde, können wir den ersten Datensatz in der Tabelle speichern.
Dies funktioniert mit folgendem Befehl:

Wenn wir diese Syntax nun auf die erste Zeile unserer Exceltabelle übertragen, sieht der Befehl wie folgt aus:

Das Feld Nummer brauchen wir nicht zu beschreiben, da wir bei der Typenvergabe des Feldes den Zusatz Auto Increment hinzugefügt haben.
Dadurch wird das Feld Nummer bei jedem neuen Datensatz um eins hochgezählt.
Die anderen vier Datensätze werden nun ebenfalls so eingefügt.
Eingegebene Datensätze können mit dem Befehl

ausgegeben werden.

-> MySQL & PHP:

Der Zugriff über PHP auf die Datenbank ähnelt dem Zugriff auf eine Datei in einer beliebigen Programmiersprache (z.B. C oder Python).
Als erstes wird mit den Zeilen

versucht eine Verbindung zur MySQL Datenbank aufzubauen.
Hierfür werden die Benutzerdaten des sich zu verbindenden Accounts benötigt.
Falls die Anmeldung aus irgendeinem Grund fehl schlägt springt PHP in die or-Verzweigung, gibt den Text Fehler im System aus und beendet die Ausführung.
Wenn erfolgreich eine Verbindung aufgebaut wurde, wird die Kennung dieser Verbindung unter DB_Connect gespeichert.
Anschließend wird die Datenbank ausgewählt.
Die Auswahl der Datenbank geschieht nach dem selben Prinzip:

Es wird geprüft ob die Datenbank vorhanden ist, wenn ja wird die Kennung unter DB_Select gespeichert, wenn nicht wird ein Fehler ausgegeben und die Ausführung wird beendet.
Danach bereite ich die Anfrage der Datenbank vor.
Dafür speicher ich den Befehl, den ich später ausführen möchte, in der Variable Tabelle:

Und mit dieser Zeile stelle ich anschließend die Anfrage:

Der Wert der in der Variable DB_Abfrage gespeichert ist, ist die Kennungsnummer für die Anfrage an die Datenbank die gestellt wurde.
Die Zeilen

lesen nun solange Datensätze aus der Anfrage aus bis die Funktion mysql_fetch_array() ein FALSE zurück gibt, sprich keine Datensätze mehr vorhanden sind.
Der aktuelle Datensatz wird dabei bei jedem Durchlauf in der Variable zeile gespeichert.
Das ganze funktioniert so:

  1. Die erste Anfrage wird gestellt, indem der Funktion die Kennunsnummer der Anfrage übergeben wird
  2. Der erste Datensatz wird ausgelesen und unter zeile gespeichert
  3. Die Funktion mysql_fest_array() gibt ein TRUE zurück
  4. Die erste Tabellenzeile (tr) wird erstellt
  5. In der ersten Spalte (td) wird der Wert vom Array zeile gespeichert dem das Element „Nummer“ zugeordnet wurde (das ist die 1)
  6. In der zweiten Spalte wird der Wert vom Array zeile gespeichert dem das Element Vorname zugeordnet wurde (das ist der Name Hans)
  7. So geht es weiter, bis alle fünf angegebenen Daten ausgegeben wurde (auf die Telefonnummer habe ich verzichtet)
  8. Die While-Schleife beginnt erneut. Diesmal wird der zweite Datensatz unter zeile gespeichert und die Ausgabe ist identisch mit der ersten, außer das eine neue Zeile begonnen wird
  9. Dies geschieht solange, wie Datensätze vorhanden sind. Ist kein Datensatz mehr vorhanden gibt die Funktion mysql_fetch_array() ein FALSE zurück und die While-Schleife wird verlassen

Anschließend wird die Anfrage mittels

beendet und die Verbindung zur Datenbank getrennt:

Im Browser sieht das ganze anschließend so aus:

MySQL_PHP

Dokumentation:

 

-> Zurück zu den Basteleien mit dem Raspberry Pi

5 thoughts on “MySQL
  1. Hallo,

    ich habe mir Ihre Anleitung zur Verbindung einer Datenbank mit einem Raspberry Pi durchgelesen und selbst angewandt.
    Ein Problem habe ich allerdings, vielleicht könnten Sie mir weiterhelfen.
    Wenn ich das PHP Skript im Webbrowser öffne, wird keine Datenbank ausgegeben. Ich vermute, das das Skript keine Verbindung zur Datenbank herstellen kann, weil evtl. der Benutzername, das Passwort oder die IP Adresse des Servers falsch eingegeben wurde.
    Welchen Benutzernamen muss ich genau eingeben? (Von der Datenbank, also „root“, oder dem Raspberry, also „pi“ ?)
    Anstatt „localhost“ kann die auch eine IP des Raspberry eingeben oder?

    Mfg Martin

    • Hallo Martin,

      für den Benutzernamen musst du den Benutzernamen der Datenbank angeben („root“ in deinem Fall).
      Ob du für „localhost“ auch die IP-Adresse angeben kannst, weiß ich aus dem Stehgreif nicht. Probier mal erst es mittels „localhost“ zum laufen zu kriegen und dann kannst du immer noch wechseln :)

      Gruß
      Daniel

  2. Hallo,

    habe localhost, aber auch die IP des Raspberry genommen, den Benutzer „root“ angegeben, dennoch funktionierts leider nicht. Um den Fehler etwas einzugrenzen, habe ich eine echo Ausgabe direkt, nach der Verbindung angegeben, um zu sehen, ob das Skript bis dahin überhaupt läuft. Und siehe da, nach der Verbindung zur Datenbank, wird das Skript nicht weiter ausgeführt. Also liegts an dem Verbindungsaufbau.
    Muss ich beim Raspberry irgendwelche Einstellungen vornehmen, damit die Verbindung einwandfrei funktioniert?

    Mfg Martin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.