Kapitel 3 von 5

MariaDB und phpMyAdmin unter Debian 13 für Laravel installieren

geprüft am 2 September 2026 · 4 Min.

Schnelle Antwort

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

bash
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
mariadb --version
code
mariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnu

Das 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:

bash
sudo mariadb-secure-installation

Das 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:

bash
sudo mariadb
sql
CREATE 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:

sql
SHOW GRANTS FOR 'laravel'@'localhost';
code
GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`

Laravel anbinden

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=un_mot_de_passe_long

DB_CONNECTION=mysql ist auch für MariaDB der richtige Wert: Laravel nutzt denselben PDO-Treiber. Leere den Konfigurations-Cache und starte dann die Migrationen:

bash
php artisan config:clear
php artisan migrate --force
code
  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 DONE

Migrationen, die durchlaufen, sind der Beweis, dass Verbindung, Rechte und Zeichensatz stimmen.

Wenn die Verbindung scheitert

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:

bash
sudo apt install -y phpmyadmin

Der 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.

Eine im Internet erreichbare Administrationsoberfläche ist ein Ziel

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.

bash
# 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 aufrufen

Im Alltag reicht die Kommandozeile, und die Frage stellt sich gar nicht erst:

bash
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinker

php 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:

bash
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

mysql_secure_installation gibt es nicht mehr Unter Debian 13 heißt das Werkzeug mariadb-secure-installation.
ALL PRIVILEGES auf *.* vergeben Wird die Anwendung kompromittiert, erreicht der Angreifer jede Datenbank des Servers. Beschränke die Rechte auf laravel.*.
utf8 statt utf8mb4 verwenden utf8 deckt nicht ganz Unicode ab: Emojis und einzelne Zeichen lassen sich nicht einfügen.
Fehler „could not find driver“ Das Problem liegt bei PHP, nicht bei MariaDB: php-mysql fehlt. php-mysqli reicht nicht, weil Laravel über PDO geht.
phpMyAdmin im Internet erreichbar Die Adresse /phpmyadmin wird rund um die Uhr gescannt. Beschränke den Zugriff oder nutze einen SSH-Tunnel.
Sicherung nie zurückgespielt Eine Sicherung, die nie eingespielt wurde, ist eine Hypothese. Teste die Wiederherstellung.
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.