MariaDB 10 auf Raspberry Pi installieren

MariaDB 10 auf Raspberry Pi installieren

Ich stand die Tage vor der Aufgabe einen Datenbankserver auf meinem Pi installieren zu müssen. In dieser wollte ich einige Daten speichern, die auf dem Webserver laufen, der ebenfalls auf dem selben Pi läuft. Das Ganze gestaltete sich aber leider etwas schwieriger, als ursprünglich gedacht. Aus diesem Grund wollte ich euch hier einmal den “richtigen” Weg zeigen oder zumindest den Weg, der bei mir funktionierte.

Die Installation und Einrichtung des Servers ist recht einfach. Das Einrichten einer Datenbank dafür etwas schwieriger.

Installation MariaDB 10

Führt folgende Befehle aus:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mariadb-client mariadb-server

Das wars dann auch schon xD

Einrichtung MariaDB 10

Jetzt kommt der etwas schwierigere Teil unserer Arbeit. Das Einrichten des Servers. Im Anschluss daran richten wir noch die Datenbank ein, erstellen Benutzer und vergeben Nutzerrechte. Aber eines nach dem Anderen.

Gebt nun den folgenden Befehl ein:

sudo mysql -u root -p

Ihr werdet hier nach einem Passwort gefragt. Wählt ein möglichst starkes Passwort und schreibt es euch auf, denn dies ist das spätere Passwort für den Admin der Datenbank, den Benutzer “root”. Habt ihr dieses neue Passwort eingeben befindet ihr euch in der Konsole von MariaDB. Führt noch diese beiden Befehle aus und ihr speichert die Eingabe, bzw. beendet die Konsole.

flush privileges;
exit;

Nun haben wir einen Benutzer angelegt.
Öffnet nun die Datei “my.conf”, indem ihr folgenden Befehl eingebt:

sudo nano /etc/mysql/my.conf

Fügt dort ein:

port = 3306
bind-address = :: #Erlaubt den Zugriff auf die DB von jeder IP-Adresse aus (Hinweis 1)

Hinweis 1: Diese Zeile sollte auskommentiert werden (“#” vor “bind-address”), wenn die DB nur vom Pi verwendet wird. Dies erhöht die Sicherheit.

Gespeichert wird über “Strg+X”, dann “y” und die Enter-Taste.

Bevor wir den Server starte wollen wir noch eine Anpassung bezüglich der Sicherheit vornehmen. Dazu gibt es einen einfachen Befehl, der einen kleinen “Wizard” zur Verfügung stellt.

sudo mysql_secure_installation

Nun könnt ihr euren Server mittels diesem Befehl neu starten:

sudo /etc/init.d/mysql restart

Einrichtung PHPMyAdmin

Als nächstes richten wir PHPMyAdmin ein. Ich nehme einfach mal an, dass ihr bereits einen Apache2 Server auf eurem Pi am laufen habt. Die Weboberfläche von PHPMyAdmin ermöglicht es uns ganz einfach die Datenbanken von MariaDB zu verwalten, Benutzer anzulegen und Daten in der Datenbank zu ändern.

sudo apt-get install phpmyadmin

Es wird während der Installation ein neuer Wizard angezeigt. Navigiert durch diesen. Wählt dabei aus, dass ihr einen Apache Server besitzt (Auswahl über Leertaste). Den Rest übernimmt der Wizard bei der Installation. Möglicherweise werdet ihr nach dem vorhin gewählten Passwort des Root Nutzers gefragt.

Wählt zusätzlich als Verbindungsart nicht “Unix/Socket”, sondern “IP/TCP” und gebt dort “127.0.0.1” mit dem Port “3306” ein.

Gebt nun diesen Befehl ins Terminal ein:

sudo nano /etc/apache2/apache2.conf

Und fügt ans Ende der Datei ein:

Include /etc/phpmyadmin/apache.conf

Gespeichert wird wieder über “Strg+X”, dann “y” und die Enter-Taste.

Den Server starten wir anschließend neu:

sudo /etc/init.d/apache2 restart

Root Zugriffsrechte

Derweilen kann es zu Problemen mit dem Login auf die phpMyAdmin Oberfläche kommen, wenn man versucht sich per root einzuloggen.
Um dieses Problem zu lösen müsst ihr auf der Konsolenebene dem root-Nutzer die Rechte geben sich per Passwort einzuloggen (diese Methode verwendet phpMyAdmin). Das ist ein “Sicherheitsfeature”.

Gebt ein:

sudo mysql -u root [<--- Enter]
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket'; [<-- Enter]
FLUSH PRIVILEGES; [<-- Enter]
exit [<-- Enter]

Nun sollte der Login im nächsten Schritt funktionieren.

Fertig

Ruft jetzt einfach die IP des Pi auf und fügt ans Ende “/phpmyadmin” an. Beispiel: “192.168.0.6/phpmyadmin”.

Viel Spaß beim Einrichten, programmieren und betreiben. Für Fragen stehe ich gerne in den Kommentaren zur Verfügung.

Marvin

Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Hat dir dieser Artikel gefallen?

Kommentar hinzufügen

*Pflichtfeld

  1. Tobi

    Hallo, erst mal danke für die Anleitung! Hab anhand deiner Angaben MariaDB und phpmyAdmin installiert. Der phpmyAdmin klappt bei mir aber irgendwie nicht so ganz, glaub ich auf jeden Fall. kannst du mir sagen, wie ich neue Benutzer anlegen kann? vielen dank und viele Grüße Tobi

  2. Melvin

    Hallo Tobi, bitte versuche es einmal mit: sudo dpkg-reconfigure phpmyadmin Reinstall database for phpmyadmin: Connection method for MySQL database server for phpmyadmin: TCP/IP Host name of the MySQL database server for phpmyadmin: localhost Port number for the MySQL service: 3306 MySQL database name for phpmyadmin: phpmyadmin MySQL username for phpmyadmin: root MySQL application password for phpmyadmin: pass # OR ANY PASSWORD YOU WANT Password confirmation: pass Name of the database's administrative user: root Web server to reconfigure automatically: apache2 An error occurred while installing the database: ignore

  3. Micha

    Moin alles hat anhand der Anleitung gut geklappt. Danke, Allerdings kann ich mich auf dem WebIF von PHPMyAdmin trotz des richtigen Kennwortes nicht einloggen "Access denied for user 'root'@'localhost' Wenn ich eine DB Erstellen möchte muss ich es aber mit dem root machen. Bitte um Hilfe

  4. Helmut

    Danke für die Anleitung, hat alles geklappt. Nur das Passwort wurde nicht angnommen. Deshalb o.g. ausprobiert. Aber wie arbeitet man die Befehlsfolge ab? Nach der ersten Zeile kommt ein Warnhinweis und auch mit OK geht es nicht weiter. Welche Zeile muss man wann und wo eingeben in der Konsole? Danke.

  5. Helmut

    Zitat: "Wählt zusätzlich als Verbindungsart nicht „Unix/Socket“, sondern „IP/TCP“ und gebt dort „127.0.0.1“ mit dem Port „3306“ ein." Diese Option wird während der Installation nicht aufgezeigt, vielleicht liegt es hieran, dass das Passwort nicht angenommen wird.

  6. Helmut

    Zitat: "Wählt zusätzlich als Verbindungsart nicht „Unix/Socket“, sondern „IP/TCP“ und gebt dort „127.0.0.1“ mit dem Port „3306“ ein." Diese Eingabemöglichkeit wird während der Installation nicht angeboten. Ist das der Grund für die "falsche" Passworteingabe?

  7. Melvin

    Artikel ist aktualisiert.

  8. Melvin

    Es kann sein, dass diese Auswahlmöglichkeiten nicht angezeigt werde, wenn man in der neueren Version von MariaDB die Konfiguration für apache2 ausgewählt hat. Ich verifiziere das noch einmal.

  9. Johannes

    Danke für die gute Install-Anleitung.
    Das Passwort musste ich nachträglich nochmal über die Konsole setzen,... ich weiß nicht warum, war aber sowieso kein Problem.
    TCP/IP konnte man nicht wählen, sockets waren fix.
    MfG

  10. erin

    hallo ich habe alles genauso gemacht wie du es geschrieben hast. Aber bei der Internetseite kann ich mich leider nicht anmelden obwohl ich weiss was mein Passwort ist. ich bekomme die Fehlermeldung "mysqli_real_connect(): (HY000/I1698): Access denied for user 'root'@'loclahost' ".

  11. Rolf

    Danke für die tolle Anleitung.
    Ich hatte (mit PHP7.3 und MariaDB) auch das Anmeldeproblem auf der phpMyAdmin Seite.
    Wer da auch Fehler #1045 sieht kann folgendes probieren:
    sudo mysql -root
    update mysql.user set password=PASSWORD("DEIN_PASSWORT") where user="root";
    FLUSH PRIVILEGES;
    exit;
    Bei mir ging es danach. Wenn man jetzt über die Shell mysql aufrufen will muss man nun noch ein -p dran hängen (um dann später sein Passwort einzugeben):
    sudo mysql -root -p
    Grüße Rolf

  12. Peter

    Ich konnte mich auch nicht anmelden, mit den gleichen Fehlern. Mit dem Benutzer "phpmyadmin" und dem festgelegten PWD funktionierte zumindest der Login. Ob es in der Folge nun weiter klappt, muss ich sehen.
    Ich habe wegen dem Fehler gegoogelt und bin dann in der Datei:
    sudo nano /etc/phpmyadmin/config-db.php auf den anderen Benutzername gestoßen.
    Der Inhalt der Datei:

    $dbuser='phpmyadmin';
    $dbpass='meinPWD';
    $basepath='';
    $dbname='phpmyadmin';
    $dbserver='localhost';
    $dbport='3306';
    $dbtype='mysql';

  13. Marco

    Hallo,

    vielen Dank für die tolle Anleitung.
    Ich stehe kurz davor, alles umzusetzen.
    Vorab habe ich aber noch eine Frage.

    Ich habe auf einem Raspberry Pi 4, Nextcloudpi (19.04) am laufen.
    Zwei weitere Pis mit LibreElec/Kodi habe ich im Netzwerk integriert.
    Diese holen sich die Dateien von der Nextcloud.

    Mein Ziel ist es jetzt auf dem Nextcloudpi auch die Datenbank bereit zu stellen, der den beiden anderen Pi "sagt" welche Dateien sich wo befinden, welche schon angesehen wurden usw.
    Anleitungen dazu gibt es genug im Netz, Stichwort advancedsettings.xml

    Mich würde jetzt interessieren, ob ich mit der o.g. Anleitungen auf dem Nextcloudpi nicht etwas durcheinander bringe.
    Soweit ich weiß, läuft ja schon eine MariaDB Instanz auf der Nextcloud.
    Kann ich nicht diese nutzen?

    Danke für die Hilfe

    Gruß Marco

  14. Marvin

    Hallo Marco,

    das klingt nach einem richtig interessanten Unterfangen! Ich kenne mich ehrlich gesagt nicht mit dem "Komplettpaket" NextcloudPi aus, wenn dieses jedoch einen eigenen MySQL-Server (z.b. Maria DB) mitbringt, dann sollte man diesen bestehenden Server bereits ohne größere Probleme verwenden können. Das Rad wird nicht neu erfunden. Stattdessen sollte ein ganz "normaler" MariaDB Server verwendet worden sein und du brauchst KEINEN neuen Server aufsetzen. Es reicht also an dem Punkt "Einrichtung PHPMyAdmin" fortzufahren, denn der Anfang ist bereits geschehen. Wichtig ist bei der Einrichtung, dass man einen neuen Nutzer anlegt (für das LibreElec) und dass dieser Nutzer KEINEN Zugriff auf die Datenbanktabellen von Nextcloud erhält. So kann man ungewünschte Änderungen verhindern. Weiterhin muss man den beiden LibreElec Instanzen auf der MariaDB Zugriff gewähren. MariaDB hat nämlich ein Sicherheitsfeature, dass es erlaubt nur bestimmte IP-Adressen einen Zugriff auf die DB zu geben (wahrscheinlich ist hier ausschließlich localhost erlaubt).

    Für die Einrichtung ist es ratsam sich bspw. phpMyAdmin zu installieren. Diese Weboberfläche erlaubt dir neue Nutzer anzulegen, diesen gleich ein gleichnamiges Datenbankchema anlegen zu lassen und dann dem neuen DB Nutzer nur Zugriff auf diese zu geben.
    WICHTIG: Bitte bei solchen Änderungen in einer "Produktivumgebung" IMMER ein Backup der Datenbank mittels bspw. "mysqldump [options] --all-databases" auf der Konsolenebene erstellen!!!

    Bei Fragen gerne einfach einen neuen Kommentar schreiben oder aber per Mail melden.

    Gruß
    Marvin

  15. Marco

    Hallo Marvin,
    ich habe alles zum laufen bekommen. Allerdings hätte ich mir ein ganzes Wochenende an Zeitaufwand sparen können, weil die Lösung vor meinen Augen lag.

    Daher "kapere" ich mal diese Anleitung und erzähle was ich wollte und wie ich es letztlich gemacht habe.

    Ich bin jemand mit zwei jährigen Linuxkenntnissen. Bin also in der Lage mir irgendwie zu helfen, wobei ich mir bei fast nichts sicher bin. Gefährliches Halbwissen eben.

    Ich hatte/habe eine NAS von Western Digital und 2 Raspberry Pis mit LibreElec/Kodi als Mediencenter im Einsatz.
    Auf der NAS liegen die Fime/Serien/Musik, die Pis holen sich davon die Dateien und geben Sie auf dem TV ab.
    Damit beide Pis den gleichen Status haben, also was ist alles auf der NAS drauf, welche Dateien wurden geschaut usw., braucht man eine Datenbank im Netzwerk.
    Diese Datenbank stellte mir auch die NAS zur Verfügung.
    Außerdem noch eine kleine Datei (advancedsettings.xml) auf jeden Pi.
    Darin stehen die Zugangsdaten der MariaDB und wo diese sich im Netzwerk befindet.

    Vor ca. einem dreiviertel Jahr habe ich mir noch einen Pi angeschafft und darauf Nextcloudpi installiert.
    Ich wollte schon immer von der Western Digital NAS wegkommen, weil ich man ja nie weiß, ob nicht irgendwo eine Hintertür offen ist.
    Mit Hilfe von Youtube Videos habe ich Nextcloud aufgesetzt und das Dingen lief ohne ein einziges Problem.
    Allerdings habe ich mir in dieser Zeit auch keine weiteren Kenntnisse angeeignet.

    Letzte Woche habe ich dann mal angefangen, alle Dateien von der NAS auf die Cloude zu kopieren. Dabei die Datenfestplatte ausgetauscht, weil diese mitlerweile zu klein wurde.
    Dann den beiden Kodi Pis Zugang zur Cloud gegeben.
    Das war einfach.

    Jetzt ging es um die gemeinsame Datenbank.
    Warum die nicht auf auf den Nextcloudpi laden?
    Da ich 0 Ahnung von MariaDB hatte, habe ich mich also auf die Suche gemacht und bin auf diese Seite gelandet.
    Maria DB installiert, php Admin installiert und plötzlich ging das Passwort nicht mehr.
    Da es schon spät war, habe ich eben alles wieder deinstalliert und wollte am nächsten Tag von vorne anfangen.

    Was ich zu diesem Zeitpunkt nicht wusste war, daß Nextcloudpi schon eine MariaDB am laufen hat.
    Und durch die Deinstallation habe ich wohl einiges zerschossen.
    Also am nächsten Tag erstmal probiert zu retten was zu retten ist. Habe ich auch irgendwie hinbekommen, aber das Verhalten der Cloud war manchmal einfach nicht stimmig.
    Also in den sauren Apfel gebissen und eine komplette Neuinstallation der Cloud durchgeführt.

    Nachdem alles wieder lief, mich weiter auf die Suche nach einer DB gemacht.
    Auf die Cloud sollte sie jetzt nicht mehr :-)

    Also warum nicht einfach mit dieser Anleitung hier, die Datenbank auf einem Kodi Pi installieren?

    Durch Zufall habe ich dann noch kurz mal was gegoogelt und fand heraus, daß es schon ein fertiges Addon der MariaDB für LibreElec/Kodi gibt.
    Das war irgendwie ein blöder Zufall.
    Schnell das Addon installiert, den Dienst gestartet, auf den beiden Pis die advancedsettings.xml angepasst und alles lief.
    Reine Arbeitszeit 10 Minuten!!!!!

    Und dafür habe ich mir das Wochenende um die Ohren geschlagen.
    Aber ich kenne Nextcloudpi und Linux eine ganze Ecke besser, als vorher :-)

    Dennoch hat mir die Anleitung geholfen. Danke dafür.

    Gruß Marco