Chapitre 3 sur 5

Installer MariaDB et phpMyAdmin sur Debian 13 pour Laravel

vérifié le 2 septembre 2026 · 4 min

Réponse rapide

sudo apt install mariadb-server, puis sudo mariadb-secure-installation (l’ancien mysql_secure_installation n’existe plus). Créez une base en utf8mb4 et un utilisateur dédié limité à cette base, jamais le compte administrateur. Côté Laravel, DB_CONNECTION=mysql vaut aussi pour MariaDB.

Laravel a besoin d’une base de données. Sur Debian, MariaDB est le choix par défaut : c’est le paquet fourni par la distribution, compatible avec le pilote MySQL de Laravel. phpMyAdmin vient ensuite, si vous voulez une interface web pour inspecter vos tables.

Ce chapitre s’inscrit dans l’installation de Laravel sur Debian, dans le parcours Développement web. Étapes exécutées sur Debian 13 « trixie » avec MariaDB 11.8.6 et Laravel 13.30.1, le 2 septembre 2026.

Installer MariaDB

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

Le compte administrateur est accessible depuis le shell root de la machine, sans mot de passe. Cela ne signifie pas que l’installation est sûre : cela signifie que la sécurité repose entièrement sur l’accès au serveur.

Sécuriser l’installation

Debian 13 fournit l’outil sous son nom MariaDB. L’ancien mysql_secure_installation n’existe plus :

bash
sudo mariadb-secure-installation

Le script pose une série de questions. Répondez ainsi :

Question Réponse Pourquoi
Switch to unix_socket authentication oui l’administrateur s’authentifie par son compte système, pas par un mot de passe stocké
Change the root password au choix inutile si vous avez activé unix_socket
Remove anonymous users oui ils permettent une connexion sans identifiant
Disallow root login remotely oui l’administration se fait en SSH, pas sur le port 3306
Remove test database oui base ouverte en écriture à tous
Reload privilege tables oui applique les changements immédiatement

Créer la base et l’utilisateur applicatif

Ne faites jamais tourner l’application avec le compte administrateur. Créez une base et un compte dédiés :

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;

Deux points méritent l’attention. Le jeu de caractères utf8mb4 n’est pas décoratif : c’est le seul qui stocke l’intégralité de l’Unicode, émojis compris. Et le privilège est restreint à laravel.*, pas à *.* : en cas de compromission de l’application, les autres bases restent hors d’atteinte.

Contrôlez le résultat :

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`

Brancher Laravel

.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 vaut aussi pour MariaDB : Laravel utilise le même pilote PDO. Videz le cache de configuration, puis lancez les migrations :

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

Les migrations qui passent sont la preuve que la connexion, les droits et le jeu de caractères sont corrects.

Si la connexion échoue

Une erreur « could not find driver » ne vient pas de MariaDB mais de PHP : il manque php-mysql. Vérifiez avec php -r 'echo implode(", ", PDO::getAvailableDrivers());', comme expliqué dans le chapitre sur PHP et ses extensions, qui doit afficher mysql. Le paquet php-mysqli ne suffit pas, Laravel passant par PDO.

phpMyAdmin, et faut-il l’installer

phpMyAdmin est de nouveau présent dans Debian 13, en version 5.2.2 :

bash
sudo apt install -y phpmyadmin

L’assistant propose de configurer le serveur web, Apache dans le cas le plus courant, et crée sa propre base de configuration. Sur une installation Apache, l’interface est ensuite servie sous /phpmyadmin.

Une interface d’administration exposée sur Internet est une cible

L’adresse /phpmyadmin est scannée en permanence. Si vous l’installez sur un serveur public, restreignez-y l’accès par adresse IP ou par authentification HTTP, ou ne l’exposez pas du tout : un tunnel SSH permet de l’atteindre depuis votre poste sans l’ouvrir au monde.

bash
# tunnel SSH : phpMyAdmin reste sur la boucle locale du serveur
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# puis http://127.0.0.1:8080/phpmyadmin depuis votre navigateur

Pour l’usage courant, la ligne de commande suffit et évite entièrement la question :

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

php artisan db:show affiche les tables, leur taille et le nombre de lignes sans quitter le terminal. C’est souvent tout ce dont on a besoin.

Sauvegarder

Une base sans sauvegarde n’est pas une base de production. La commande minimale :

bash
sudo mariadb-dump --single-transaction laravel | gzip > /var/sauvegardes/laravel-$(date +%F).sql.gz

--single-transaction évite de verrouiller les tables pendant l’export sur les tables InnoDB, ce qui permet de sauvegarder sans interrompre le service. Placez cette ligne dans une tâche planifiée, et vérifiez de temps en temps qu’une restauration fonctionne réellement : une sauvegarde jamais restaurée est une hypothèse, pas une garantie.

Erreurs fréquentes

mysql_secure_installation n’existe plus Sur Debian 13, l’outil s’appelle mariadb-secure-installation.
Donner ALL PRIVILEGES sur *.* Une compromission de l’application donne alors accès à toutes les bases du serveur. Restreignez à laravel.*.
Utiliser utf8 au lieu de utf8mb4 utf8 ne couvre pas l’intégralité de l’Unicode : les émojis et certains caractères provoquent une erreur à l’insertion.
Erreur « could not find driver » Le problème vient de PHP, pas de MariaDB : il manque php-mysql. php-mysqli ne suffit pas, Laravel passant par PDO.
phpMyAdmin exposé sur Internet L’adresse /phpmyadmin est scannée en permanence. Restreignez l’accès ou passez par un tunnel SSH.
Sauvegarde jamais restaurée Une sauvegarde qu’on n’a jamais rejouée est une hypothèse. Testez la restauration.
Newsletter

Les nouveaux tests, tutoriels et projets, par e-mail.

Tests reproductibles, code versionné, résultats datés. Jamais de spam.