MariaDB einrichten
Installieren, absichern, Datenbank und Benutzer anlegen, Zugriff von außen nur gezielt, Sicherung mit mariadb-dump.
5 Min. Lesezeit
Auf dieser Seite
MariaDB ist der Datenbankserver, den die meisten PHP-Anwendungen wie WordPress erwarten. Diese Anleitung installiert ihn aus den Paketquellen deiner Distribution.
Gilt für Debian 12 und 13, Ubuntu 22.04 und 24.04, AlmaLinux 9 und Rocky Linux 9. Alle Befehle laufen als root, Anmeldung siehe Per SSH verbinden.
Installieren
Debian und Ubuntu:
apt update
apt install -y mariadb-serverAlmaLinux und Rocky Linux:
dnf install -y mariadb-server
systemctl enable --now mariadbLäuft der Dienst?
systemctl status mariadb
mariadb --versionAbsichern
mariadb-secure-installationDas Skript stellt ein paar Fragen. Gute Antworten für einen neuen Server:
| Frage | Antwort |
|---|---|
| Enter current password for root | einfach Enter |
| Switch to unix_socket authentication | n (root meldet sich schon über den Socket an) |
| Change the root password | n |
| Remove anonymous users | y |
| Disallow root login remotely | y |
| Remove test database | y |
| Reload privilege tables | y |
Danach kommt root nur noch lokal als Linux-root in die Datenbank, ohne Passwort:
mariadbMit exit verlässt du die Konsole wieder.
Datenbank und Benutzer anlegen
Jede Anwendung bekommt eine eigene Datenbank und einen eigenen Benutzer. Nimm nie root für eine Anwendung. Erzeug zuerst ein starkes Passwort:
openssl rand -base64 24Dann in der MariaDB-Konsole (mariadb), mit deinen Namen und dem Passwort:
CREATE DATABASE meineapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'meineapp'@'localhost' IDENTIFIED BY 'DEIN-PASSWORT';
GRANT ALL PRIVILEGES ON meineapp.* TO 'meineapp'@'localhost';
FLUSH PRIVILEGES;'meineapp'@'localhost' heißt: Der Benutzer darf sich nur vom Server selbst anmelden. Für eine Anwendung auf demselben vServer ist das richtig.
Prüfen, ob es geklappt hat
mariadb -u meineapp -p meineapp -e 'SELECT CURRENT_USER(), DATABASE();'Nach dem Passwort sollte meineapp@localhost und meineapp erscheinen.
Zugriff von außen, nur wenn nötig
Läuft die Anwendung auf demselben Server, lass diesen Abschnitt weg. MariaDB hört dann nur auf 127.0.0.1, und das ist der sicherste Zustand.
Brauchst du den Zugriff von einem anderen Rechner, dann nur von einer festen Adresse aus. Als Beispiel steht 203.0.113.10 für die Adresse, von der aus du zugreifst.
-
MariaDB auf alle Adressen hören lassen. Die Datei ist je nach System eine andere:
- Debian und Ubuntu:
/etc/mysql/mariadb.conf.d/50-server.cnf - AlmaLinux und Rocky Linux:
/etc/my.cnf.d/mariadb-server.cnf
Im Abschnitt
[mysqld](Debian/Ubuntu) bzw.[mariadb]oder[mysqld](Alma/Rocky):inibind-address = 0.0.0.0Dann
systemctl restart mariadb. - Debian und Ubuntu:
-
Einen Benutzer nur für diese Adresse anlegen:
sqlCREATE USER 'meineapp'@'203.0.113.10' IDENTIFIED BY 'DEIN-PASSWORT'; GRANT ALL PRIVILEGES ON meineapp.* TO 'meineapp'@'203.0.113.10'; FLUSH PRIVILEGES;Nimm nicht
'%'als Host. Das erlaubt Anmeldeversuche von überall. -
Port 3306 in der Firewall nur für diese Adresse öffnen.
Debian und Ubuntu mit
ufw:bashufw allow from 203.0.113.10 to any port 3306 proto tcpAlmaLinux und Rocky Linux mit
firewalld:bashfirewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept' firewall-cmd --reload
Sichern mit mariadb-dump
Ein Dump ist eine SQL-Datei, aus der du die Datenbank wiederherstellen kannst. Leg einen Ordner an und sichere eine Datenbank:
mkdir -p /var/backups/mariadb
chmod 700 /var/backups/mariadb
mariadb-dump --single-transaction --routines --triggers meineapp | gzip > /var/backups/mariadb/meineapp-$(date +%F).sql.gzAlle Datenbanken auf einmal:
mariadb-dump --single-transaction --routines --triggers --all-databases | gzip > /var/backups/mariadb/alle-$(date +%F).sql.gz--single-transaction erstellt einen stimmigen Stand, ohne die Tabellen zu sperren (für InnoDB, den Standard).
Zurückspielen in eine leere Datenbank:
gunzip -c /var/backups/mariadb/meineapp-2026-11-05.sql.gz | mariadb meineappEin Dump auf demselben Server schützt nicht, wenn der Server weg ist. Wie du ihn jede Nacht automatisch anlegst und außer Haus kopierst, steht in Cronjobs und Timer und Backups einrichten.
Häufige Fehler
ERROR 1045 (28000): Access denied. Falsches Passwort, oder der Benutzer existiert nur für einen anderen Host.SELECT User, Host FROM mysql.user;zeigt, welche es gibt.ERROR 2002: Can't connect to local server through socket. Der Dienst läuft nicht.systemctl status mariadbundjournalctl -u mariadbzeigen den Grund, oft eine volle Platte (df -h).- Von außen kommt keine Verbindung. Prüf mit
ss -tlnp | grep 3306, ob MariaDB auf0.0.0.0hört, dann die Firewall und den Host des Benutzers. - Umlaute oder Emojis kaputt. Die Datenbank wurde nicht mit
utf8mb4angelegt. Für neue Datenbanken die Zeile oben nehmen.
Wie es weitergeht
- WordPress mit dieser Datenbank: PHP und WordPress.
- Sicherungen automatisieren: Backups einrichten.
Kommst du nicht weiter, schreib uns ein Ticket.