MariaDB und phpMyAdmin unter Debian 13 für Laravel installieren
geprüft am 2 September 2026 · 4 Min.
sudo apt install mariadb-server, dann sudo mariadb-secure-installation (das alte mysql_secure_installation gibt es nicht mehr). Leg eine Datenbank in utf8mb4 an und einen eigenen Benutzer, der nur auf diese Datenbank zugreifen darf, nie das Administratorkonto. Auf Laravel-Seite gilt DB_CONNECTION=mysql auch für MariaDB.
Laravel braucht eine Datenbank. Unter Debian ist MariaDB die naheliegende Wahl: Es ist das Paket der Distribution und arbeitet mit dem MySQL-Treiber, den Laravel ohnehin nutzt. phpMyAdmin kommt danach, falls du eine Weboberfläche willst, um deine Tabellen anzusehen.
Dieses Kapitel gehört zur Installation von Laravel auf einem Debian-Server, im Lernpfad Webentwicklung. Die Schritte wurden am 2. September 2026 auf Debian 13 „trixie“ mit MariaDB 11.8.6 und Laravel 13.30.1 ausgeführt.
MariaDB installieren
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
mariadb --versionmariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnuDas Administratorkonto ist über die Root-Shell der Maschine erreichbar, ohne Passwort. Sicher ist die Installation damit nicht: Die Sicherheit hängt vollständig daran, wer auf den Server kommt.
Die Installation absichern
Debian 13 liefert das Werkzeug unter seinem MariaDB-Namen aus. Das alte mysql_secure_installation gibt es nicht mehr:
sudo mariadb-secure-installationDas Skript stellt eine Reihe von Fragen. Antworte so:
| Frage | Antwort | Warum |
|---|---|---|
| Switch to unix_socket authentication | ja | der Administrator meldet sich über sein Systemkonto an, nicht über ein gespeichertes Passwort |
| Change the root password | nach Belieben | überflüssig, sobald unix_socket aktiv ist |
| Remove anonymous users | ja | sie erlauben eine Verbindung ohne Zugangsdaten |
| Disallow root login remotely | ja | administriert wird über SSH, nicht über Port 3306 |
| Remove test database | ja | eine Datenbank, in die jeder schreiben darf |
| Reload privilege tables | ja | übernimmt die Änderungen sofort |
Datenbank und Anwendungsbenutzer anlegen
Lass die Anwendung nie unter dem Administratorkonto laufen. Leg eine eigene Datenbank und ein eigenes Konto an:
sudo mariadbCREATE DATABASE laravel
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'un_mot_de_passe_long';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;Zwei Details lohnen den zweiten Blick. Der Zeichensatz utf8mb4 ist keine Dekoration: Er ist der einzige, der ganz Unicode speichert, Emojis eingeschlossen. Und das Privileg ist auf laravel.* beschränkt, nicht auf *.*: Wird die Anwendung kompromittiert, bleiben die übrigen Datenbanken außer Reichweite.
Prüfe das Ergebnis:
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Laravel anbinden
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=un_mot_de_passe_longDB_CONNECTION=mysql ist auch für MariaDB der richtige Wert: Laravel nutzt denselben PDO-Treiber. Leere den Konfigurations-Cache und starte dann die Migrationen:
php artisan config:clear
php artisan migrate --force INFO Running migrations.
0001_01_01_000000_create_users_table ......................... 136.15ms DONE
0001_01_01_000001_create_cache_table .......................... 65.58ms DONE
0001_01_01_000002_create_jobs_table .......................... 117.52ms DONEMigrationen, die durchlaufen, sind der Beweis, dass Verbindung, Rechte und Zeichensatz stimmen.
Ein Fehler „could not find driver“ kommt nicht von MariaDB, sondern von PHP: php-mysql fehlt. Prüfe mit php -r 'echo implode(", ", PDO::getAvailableDrivers());', wie im Kapitel zu PHP und seinen Erweiterungen beschrieben, in der Ausgabe muss mysql stehen. Das Paket php-mysqli reicht nicht, weil Laravel über PDO geht.
phpMyAdmin, und ob du es brauchst
phpMyAdmin ist in Debian 13 wieder dabei, in Version 5.2.2:
sudo apt install -y phpmyadminDer Assistent bietet an, den Webserver einzurichten, im häufigsten Fall Apache, und legt seine eigene Konfigurationsdatenbank an. Unter Apache wird die Oberfläche danach unter /phpmyadmin ausgeliefert.
Die Adresse /phpmyadmin wird rund um die Uhr gescannt. Wenn du sie auf einem öffentlichen Server installierst, beschränke den Zugriff per IP-Adresse oder HTTP-Authentifizierung, oder stelle sie gar nicht erst ins Netz: Über einen SSH-Tunnel erreichst du sie von deinem Rechner aus, ohne sie der Welt zu öffnen.
# SSH-Tunnel: phpMyAdmin bleibt auf dem Loopback des Servers
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# dann http://127.0.0.1:8080/phpmyadmin im Browser aufrufenIm Alltag reicht die Kommandozeile, und die Frage stellt sich gar nicht erst:
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerphp artisan db:show zeigt die Tabellen, ihre Größe und die Zeilenzahl, ohne dass du das Terminal verlässt. Meistens ist das alles, was man braucht.
Sichern
Eine Datenbank ohne Sicherung ist keine Produktionsdatenbank. Das absolute Minimum:
sudo mariadb-dump --single-transaction laravel | gzip > /var/sauvegardes/laravel-$(date +%F).sql.gz--single-transaction verhindert, dass InnoDB-Tabellen während des Exports gesperrt werden, der Dienst läuft also weiter, während die Sicherung läuft. Trag diese Zeile in einen Cronjob ein und prüfe von Zeit zu Zeit, ob eine Wiederherstellung wirklich funktioniert: Eine Sicherung, die nie zurückgespielt wurde, ist eine Hypothese, keine Garantie.
Häufige Fehler
mariadb-secure-installation.laravel.*.php-mysql fehlt. php-mysqli reicht nicht, weil Laravel über PDO geht.