Installer MariaDB et phpMyAdmin sur Debian 13 pour Laravel
vérifié le 2 septembre 2026 · 4 min
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
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-gnuLe 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 :
sudo mariadb-secure-installationLe 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 :
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;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 :
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Brancher Laravel
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 vaut aussi pour MariaDB : Laravel utilise le même pilote PDO. Videz le cache de configuration, puis lancez les migrations :
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 DONELes migrations qui passent sont la preuve que la connexion, les droits et le jeu de caractères sont corrects.
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 :
sudo apt install -y phpmyadminL’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.
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.
# 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 navigateurPour l’usage courant, la ligne de commande suffit et évite entièrement la question :
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerphp 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 :
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
mariadb-secure-installation.laravel.*.php-mysql. php-mysqli ne suffit pas, Laravel passant par PDO.