Raspberry Pi MariaDB
Aktion: Gratis-Lektionen anschauen ✓
NEWS
RASPBERRY PI MARIADB

Geordnete Schubladen: die Datenbank für Pi-Projekte
Passende Hardware im Überblick
Boards – für einen Datenbankserver zählt RAM:
Raspberry Pi 5 mit 8GB RAM – die Empfehlung (Link)*
Raspberry Pi 5 mit 16GB RAM für große Datenbestände (Link)*
Raspberry Pi 5 mit 4GB RAM – reicht für die meisten Projekte (Link)*
Raspberry Pi 4 Starter-Set – wenn es günstig sein soll (Link)*
Beelink S12 Pro N100 – wenn die Datenbank dem Pi entwächst (Link)*
Speicher – eine Datenbank gehört auf SSD:
Geekworm X1001 M.2-HAT für den Pi 5 (Link)*
Offizieller PCIe M.2 HAT (Link)*
Intenso M.2 NVMe SSD 500GB – der Preistipp (Link)*
Crucial P310 NVMe SSD 500GB (Link)*
SanDisk Extreme Portable SSD 1TB – per USB am Pi 4 (Link)*
SanDisk Extreme A2 128GB – nur als Systemkarte (Link)*
Dauerbetrieb absichern:
Offizielles 27-W-Netzteil für den Pi 5 (Link)*
Geekworm X1200 USV – schützt vor Datenverlust (Link)*
PiSugar 3 Plus Akku-Modul (Link)*
PoE-HAT für den Netzwerkschrank (Link)*
Passives Alu-Gehäuse als Kühlkörper (Link)*
Kurz gesagt: Wofür braucht man MariaDB auf dem Raspberry Pi?
Raspberry Pi MariaDB in Kürze:
- Installation in einem Befehl: sudo apt install mariadb-server – Raspberry Pi OS Trixie liefert MariaDB 11.8 LTS mit, Bookworm die Version 10.11 LTS.
- Absichern nicht vergessen: sudo mariadb-secure-installation entfernt anonyme Benutzer und die Testdatenbank. Der Befehl heißt seit Jahren nicht mehr mysql_secure_installation, auch wenn das als Alias weiterlebt.
- Ein Benutzer pro Anwendung: Jedes Projekt bekommt eigene Datenbank, eigenen Benutzer und Rechte nur auf diese eine Datenbank – niemals alles mit dem Root-Konto.
- Die Datenbank gehört auf eine SSD: MariaDB schreibt permanent. Auf einer SD-Karte ist das ein Countdown bis zum Ausfall, keine Frage des Ob.
- Netzwerkzugriff ist optional: Standardmäßig lauscht der Server nur auf 127.0.0.1. Wer ihn öffnet, muss wissen, was er tut.
- Sicherung mit mariadb-dump: Ein nächtlicher Cronjob genügt – aber nur, wenn die Rücksicherung einmal wirklich getestet wurde.
Was MariaDB ist – und warum sie auf dem Pi so verbreitet ist
MariaDB ist ein relationaler Datenbankserver und ein Abkömmling von MySQL. Sie wurde von den ursprünglichen MySQL-Entwicklern gestartet, nachdem MySQL an Oracle ging, und ist bis heute weitgehend befehlskompatibel. Praktisch bedeutet das: Fast jede Anleitung, die „MySQL" sagt, funktioniert auf dem Pi mit MariaDB unverändert.
Der Unterschied zu einer Datei-Datenbank wie SQLite liegt im Betriebsmodell. SQLite ist eine einzelne Datei, auf die genau ein Programm zugreift. MariaDB läuft dagegen als eigener Dienst im Hintergrund und nimmt Verbindungen entgegen – von mehreren Programmen gleichzeitig, auf Wunsch auch von anderen Rechnern im Heimnetz. Genau das brauchen Webanwendungen, Smart-Home-Systeme und Auswertungswerkzeuge.
Auf dem Raspberry Pi ist MariaDB Standard, weil sie ausgesprochen genügsam ist: Der Grundbetrieb belegt gut 100 MB Arbeitsspeicher, der Dienst startet in Sekunden, und auf einem Pi 5 mit 4 GB RAM und NVMe-SSD verarbeitet sie Datenbestände von mehreren Gigabyte ohne Murren.
Der Preis dafür ist eine Eigenschaft, die man kennen muss: MariaDB schreibt ständig. Transaktionsprotokolle, Indexänderungen, Zwischenspeicher – auch dann, wenn scheinbar nichts passiert. Diese Dauerschreiblast ist der Grund, warum Datenbanken und SD-Karten eine schlechte Ehe führen.
Raspberry Pi MariaDB installieren und absichern – Schritt für Schritt
- System aktualisieren: sudo apt update && sudo apt full-upgrade – das erspart die meisten Paketkonflikte.
- Server installieren: sudo apt install mariadb-server. Das Paket richtet den Dienst ein und startet ihn automatisch. Prüfen lässt sich das mit systemctl status mariadb.
- Absichern: sudo mariadb-secure-installation. Die Fragen mit „n" für den Wechsel der Root-Authentifizierung, sonst durchgehend mit „y" beantworten: anonyme Benutzer entfernen, Root-Login übers Netz verbieten, Testdatenbank löschen, Rechte neu laden.
- Anmelden: sudo mariadb. Der Root-Zugang läuft unter Debian über unix_socket – wer am System bereits Administratorrechte hat, kommt ohne Datenbankpasswort hinein. Das ist gewollt und sicherer als ein Passwort in einer Konfigurationsdatei.
- Datenbank anlegen: CREATE DATABASE projekt CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; – die Zeichensatzangabe ist wichtig, sonst scheitern später Emojis und Sonderzeichen.
- Benutzer anlegen und berechtigen:
CREATE USER 'projekt'@'localhost' IDENTIFIED BY 'EinLangesPasswort';
GRANT ALL PRIVILEGES ON projekt.* TO 'projekt'@'localhost';
FLUSH PRIVILEGES;
Beachte das projekt.* – der Benutzer darf ausschließlich in dieser einen Datenbank arbeiten. - Testen: Mit exit abmelden, dann mariadb -u projekt -p projekt. Erscheint die Eingabeaufforderung, ist der Zugang fertig und die Anwendung kann verbunden werden.
Zugriff aus dem Netzwerk erlauben – und warum das heikel ist
Solange Anwendung und Datenbank auf demselben Pi laufen, ist nichts zu tun. Interessant wird es, wenn ein zweiter Rechner zugreifen soll – etwa ein Home-Assistant-Server, der seine Daten auslagert. Dafür sind zwei Änderungen nötig: In /etc/mysql/mariadb.conf.d/50-server.cnf wird bind-address = 127.0.0.1 auf 0.0.0.0 gesetzt, und der Benutzer braucht ein Netzwerk-Pendant, etwa 'projekt'@'192.168.1.%' statt 'localhost'. Danach sudo systemctl restart mariadb.
Damit lauscht Port 3306 im gesamten Netz – und hier hören viele Anleitungen auf, während die Probleme anfangen. Ein offener Datenbankport gehört niemals in eine Portfreigabe des Routers: Datenbankserver werden im Internet automatisiert abgeklopft, und ein schwaches Passwort reicht für den Vollzugriff auf alle Inhalte.
Vernünftig ist deshalb: die Bindung auf die konkrete Heimnetz-IP des Pi statt auf 0.0.0.0, Rechte nur für den benötigten Adressbereich, ein langes zufälliges Passwort je Anwendung und eine Firewall-Regel, die Port 3306 auf das lokale Netz begrenzt. Von außen erreicht man den Server sauber über WireGuard – nie direkt.
Datenverzeichnis auf SSD legen und Puffer anpassen
MariaDB legt ihre Daten unter /var/lib/mysql ab. Läuft das System noch von SD-Karte, sollte dieses Verzeichnis als Erstes umziehen – oder besser gleich das ganze System auf NVMe. Der Umzug in vier Schritten: Dienst mit sudo systemctl stop mariadb anhalten, mit sudo rsync -av /var/lib/mysql/ /mnt/ssd/mysql/ kopieren, in 50-server.cnf die Zeile datadir auf den neuen Pfad zeigen lassen und den Dienst wieder starten. Wichtig: Der neue Ordner muss mysql:mysql gehören, und die AppArmor-Regel in /etc/apparmor.d/local/usr.sbin.mariadbd muss den Pfad freigeben – sonst startet der Dienst mit einem Rechtefehler, der auf den ersten Blick unerklärlich wirkt.
Die zweite Stellschraube ist der Arbeitsspeicher. Die Voreinstellungen sind auf Server ausgelegt, die es auf dem Pi nicht gibt. Diese Werte in 50-server.cnf haben sich für kleine Systeme bewährt:
| Einstellung | Sinnvoller Wert | Wirkung |
|---|---|---|
| innodb_buffer_pool_size | 512M (4 GB RAM) bis 2G (16 GB) | Wichtigster Wert: hält Daten im RAM statt auf der SSD |
| max_connections | 40 statt 151 | Verhindert, dass zu viele Verbindungen den Speicher füllen |
| innodb_flush_log_at_trx_commit | 2 | Deutlich weniger Schreibzugriffe, im Gegenzug bis zu 1 Sekunde Datenverlust bei Stromausfall |
| skip-name-resolve | aktiviert | Spart die DNS-Rückauflösung bei jeder Verbindung |
| expire_logs_days | 7 | Räumt alte Binärlogs auf, bevor sie den Speicher füllen |
Nach jeder Änderung sudo systemctl restart mariadb. Wer den Puffer zu groß wählt, erreicht das Gegenteil: Das System weicht auf den Swap aus, und die Datenbank wird langsamer statt schneller.
Sicherung mit mariadb-dump und automatisiert per Cron
Eine laufende Datenbank lässt sich nicht sinnvoll dateiweise kopieren – ein Image der Karte im laufenden Betrieb liefert im Zweifel eine unbrauchbare Datenbank. Das richtige Werkzeug heißt mariadb-dump und schreibt einen konsistenten Textauszug:
sudo mariadb-dump --single-transaction --all-databases | gzip > /mnt/ssd/backup/mariadb-$(date +%F).sql.gz
Der Schalter --single-transaction ist der entscheidende Teil: Er friert den Stand für die Dauer des Auszugs ein, ohne die Anwendung auszusperren. Automatisiert wird das per sudo crontab -e mit einer Zeile wie 0 3 * * * /usr/local/bin/db-backup.sh – nachts um drei, wenn nichts los ist. Im Skript gehört noch eine Aufräumzeile dazu, sonst füllt sich die SSD über Monate mit Auszügen: find /mnt/ssd/backup -name "*.sql.gz" -mtime +14 -delete.
Der Teil, den fast alle auslassen: Die Rücksicherung muss einmal getestet werden. Sie geht mit zcat sicherung.sql.gz | sudo mariadb beziehungsweise für eine einzelne Datenbank mit sudo mariadb projekt < sicherung.sql. Ein Auszug, den nie jemand zurückgespielt hat, ist eine Vermutung – kein Backup. Und er gehört auf ein anderes Gerät, denn eine Kopie auf derselben SSD hilft beim Ausfall genau dieser SSD nicht.
Raspberry Pi MariaDB im Alltag: typische Einsatzfälle
- Webprojekte im Heimnetz: WordPress, Joomla oder eine kleine Vereinsseite – die klassische Kombination aus Apache oder nginx, PHP und MariaDB läuft auf dem Pi 5 flüssig.
- Home-Assistant-Recorder auslagern: Home Assistant schreibt seine Verlaufsdaten standardmäßig in eine SQLite-Datei, die mit der Zeit träge wird. Ein Eintrag wie db_url: mysql://ha:passwort@192.168.1.50/homeassistant?charset=utf8mb4 in der Recorder-Konfiguration verlagert das auf MariaDB – die Oberfläche reagiert danach merklich flotter.
- Sensordaten sammeln: Messwerte landen per Python oder Node-RED in einer Tabelle und werden später ausgewertet.
- Nextcloud: Nextcloud arbeitet mit SQLite nur im Testbetrieb vernünftig. Ab dem ersten echten Nutzer ist MariaDB Pflicht – mit utf8mb4 und der Transaktionsisolation READ-COMMITTED.
- Verwaltung im Browser: Wem die Kommandozeile zu spröde ist, installiert Adminer als einzelne PHP-Datei oder phpMyAdmin. Beides sollte nur im Heimnetz erreichbar sein.
MariaDB, SQLite, PostgreSQL oder InfluxDB – was wann?
| Datenbank | Stärke | Passt auf dem Pi für |
|---|---|---|
| SQLite | Kein Dienst, eine einzige Datei, null Wartung | Ein Programm, wenige Schreibvorgänge, kleine Datenmengen |
| MariaDB | Mehrere Zugriffe gleichzeitig, riesige Verbreitung, genügsam | Der Standardfall: Web, Smart Home, Sammeldaten |
| PostgreSQL | Strenge Datentypen, komplexe Abfragen, Erweiterungen | Wenn die Anwendung es ausdrücklich verlangt |
| InfluxDB | Zeitreihen, starke Kompression, automatische Verdichtung | Messwerte im Sekundentakt plus Grafana |
Faustregel: Solange nur ein Programm schreibt, ist SQLite die einfachere Antwort. Sobald mehrere Anwendungen oder Geräte auf dieselben Daten zugreifen, führt kaum ein Weg an MariaDB vorbei. Für reine Zeitreihen ist InfluxDB die sparsamere Wahl – beide Systeme parallel zu betreiben ist auf einem 8-GB-Pi völlig üblich.
MariaDB im Docker-Container betreiben
Wer ohnehin mit Docker arbeitet, muss MariaDB nicht ins System installieren. Das offizielle Image gibt es für arm64, und eine compose.yaml beschreibt den Dienst vollständig:
services:
db:
image: mariadb:11.8
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: geheim
MARIADB_DATABASE: projekt
MARIADB_USER: projekt
MARIADB_PASSWORD: ebenfallsgeheim
volumes:
- ./data:/var/lib/mysql
Der Vorteil: Datenbank und Anwendung liegen im selben Ordner, ein Umzug bedeutet Ordner kopieren. Ein Port muss nur dann nach außen gelegt werden, wenn wirklich fremde Geräte zugreifen – im selben Compose-Netz erreichen sich die Container über ihren Dienstnamen. Der Nachteil: Das data-Verzeichnis muss trotzdem auf der SSD liegen, und Sicherungen laufen über docker exec statt direkt.
Fehler und Stolpersteine bei MariaDB auf dem Pi
- „Access denied for user": Fast immer stimmt nicht das Passwort, sondern der Host-Teil des Benutzers. 'projekt'@'localhost' und 'projekt'@'%' sind zwei verschiedene Konten. SELECT user, host FROM mysql.user; zeigt, was tatsächlich existiert.
- Datenbank nach Stromausfall beschädigt: Der häufigste Totalverlust auf dem Pi. InnoDB repariert sich beim Start meist selbst; hilft das nicht, bringt innodb_force_recovery = 1 den Dienst kurzzeitig zurück, um einen Auszug zu ziehen. Vorbeugen ist besser: sauber herunterfahren und eine USV einsetzen.
- Speicher voll durch Logs: Binärlogs und ein eingeschaltetes Slow-Query-Log wachsen unbemerkt. Wenn der Speicher volläuft, verweigert MariaDB den Dienst. expire_logs_days setzen und den Ordner /var/log/mysql gelegentlich ansehen.
- Falsche Zeitstempel: Ohne geladene Zeitzonentabellen kennt MariaDB nur SYSTEM. Abhilfe: sudo mariadb-tzinfo-to-sql /usr/share/zoneinfo | sudo mariadb mysql, danach default_time_zone = 'Europe/Berlin' eintragen – sonst springen Auswertungen zur Zeitumstellung.
- Zeichensalat statt Umlauten: Wurde die Datenbank ohne utf8mb4 angelegt, erscheinen später Fragezeichen und kaputte Emojis. Nachträglich lässt sich das umstellen, aber es ist mühsam – gleich richtig anlegen.
- Root-Passwort setzen wollen: Unter Debian ist die Socket-Anmeldung Absicht. Wer sie durch ein Passwort ersetzt, sperrt sich gelegentlich Wartungsskripte aus, ohne einen Sicherheitsgewinn zu erzielen.
- Alles läuft auf der SD-Karte: Die Karte hält Monate, nicht Jahre. Berichte aus der Community zeigen, dass genau hier die meisten „plötzlich kaputten" Pi-Datenbanken herkommen.
Häufige Fragen zu MariaDB auf dem Raspberry Pi
Welche MariaDB-Version bringt Raspberry Pi OS mit?
Raspberry Pi OS auf Trixie-Basis liefert MariaDB 11.8 LTS, die ältere Bookworm-Ausgabe die Version 10.11 LTS. Beide sind Langzeitversionen und bekommen über die Paketquellen Sicherheitsaktualisierungen – ein Fremdrepository ist für Heimprojekte unnötig.
Ist MariaDB dasselbe wie MySQL?
Nicht dasselbe, aber weitgehend kompatibel. Befehle, Werkzeuge und Verbindungsbibliotheken funktionieren in aller Regel identisch. Anleitungen für MySQL lassen sich fast immer eins zu eins übernehmen.
Reicht ein Raspberry Pi Zero 2 W als Datenbankserver?
Für ein kleines Sensorprotokoll ja, für alles Weitere nein. 512 MB RAM lassen kaum Spielraum für den Puffer, und der SD-Karten-Betrieb macht die Sache zusätzlich riskant. Ab dem Pi 4 mit 4 GB und SSD wird es solide.
Wie groß darf die Datenbank auf dem Pi werden?
Die Grenze setzt nicht MariaDB, sondern der Datenträger und der Arbeitsspeicher. Auf einem Pi 5 mit NVMe sind zweistellige Gigabyte-Bereiche unproblematisch, solange die häufig gelesenen Teile in den Puffer passen.
Warum heißt der Befehl jetzt mariadb-dump und nicht mysqldump?
MariaDB hat ihre Werkzeuge umbenannt, um sich von MySQL zu lösen. Die alten Namen existieren noch als Verweise, gelten aber als veraltet. In neuen Skripten gehören die mariadb-Varianten hinein.
Kann ich MariaDB und InfluxDB parallel betreiben?
Ja, das ist auf einem Pi mit 8 GB RAM ein verbreitetes Gespann: MariaDB für Zustände und Konfigurationsdaten, InfluxDB für hochfrequente Messreihen. Beide zusammen belegen im Ruhezustand deutlich unter einem Gigabyte.
Wie entferne ich MariaDB wieder vollständig?
Mit sudo apt purge mariadb-server mariadb-client und anschließendem Löschen von /var/lib/mysql sowie /etc/mysql. Vorher unbedingt einen Auszug ziehen – purge fragt nicht nach.
Fazit
Raspberry Pi MariaDB ist in fünf Minuten installiert – und genau diese Leichtigkeit ist die Falle, denn die Entscheidungen, die wirklich zählen, trifft man danach. Unsere klare Empfehlung: Bevor die erste Anwendung verbunden wird, gehören Datenverzeichnis auf eine SSD, ein eigener Benutzer je Projekt und ein nächtlicher mariadb-dump mit getesteter Rücksicherung eingerichtet. Wer diese drei Punkte am Anfang erledigt, hat einen Datenbankserver, der jahrelang unauffällig durchläuft. Wer sie aufschiebt, lernt sie irgendwann an einem Sonntagabend kennen – dann, wenn die SD-Karte nach dem Stromausfall nicht mehr mitspielt und der letzte brauchbare Stand von niemandem gesichert wurde.
* = Affiliate Link (raspi-config.de ist Teilnehmer des Partnerprogramms von Amazon EU, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu Amazon.de Werbekostenerstattung verdient werden kann.)
Aktion: Gratis-Lektionen anschauen ✓
VORSCHAU
Was Dich im Raspberry Pi Videokurs erwartet.
Play klicken & Video abspielen.
NEWS
EMPFEHLUNG
Danke für Deine Weiterempfehlung!
© 2026 raspi-config.de | Datenschutz | Impressum


