phpMyAdmin et Adminer : panneaux pour bases de données
Comment installer un panneau web pour une base de données sur VDS et le verrouiller pour qu'il ne devienne pas une porte d'entrée : accès par mot de passe, restrictions d'adresse, alternatives.
Mis à jour le 23 août 2026
Un panneau web est pratique pour les modifications ponctuelles et la consultation des tables. C'est aussi la cause la plus fréquente de compromission d'un serveur : les URL /phpmyadmin sont bruteforcées automatiquement, et le formulaire de connexion donne un accès direct aux données.
Adminer : un seul fichier
Adminer est un unique fichier PHP et prend en charge MySQL, PostgreSQL et SQLite. Il n'y a rien à installer :
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
Vous avez besoin d'un PHP-FPM fonctionnel. Il est préférable de renommer le fichier de manière peu évidente — ce n'est pas une protection, mais cela élimine le balayage de masse.
phpMyAdmin
apt install -y phpmyadmin
Le paquet se connecte automatiquement à Apache ; pour Nginx, indiquez le chemin manuellement :
location /db-panel {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Protection indispensable
N'installez jamais le panneau sans ces trois éléments.
Accès uniquement depuis votre adresse :
location /db-panel {
allow 203.0.113.10;
deny all;
}
Un mot de passe supplémentaire au niveau du serveur web :
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
Et le troisième : HTTPS uniquement : certificat Let's Encrypt. Sans lui, le mot de passe de la base de données est transmis en clair.
Meilleure option : aucun panneau exposé vers l'extérieur
Si votre adresse est dynamique, n'exposez pas le panneau du tout. Configurez un tunnel SSH et travaillez avec un client de bureau — DBeaver, TablePlus, HeidiSQL :
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
Détails — accès distant. Ainsi, rien d'autre que SSH n'est exposé vers l'extérieur, et vous n'avez tout simplement pas besoin du panneau.
Erreurs courantes
| Symptôme | Cause |
|---|---|
Le navigateur télécharge adminer.php | PHP n'est pas connecté à ce chemin |
#1045 Access denied | L'utilisateur de la base de données est lié à un autre hôte |
| L'import d'un gros dump est interrompu | upload_max_filesize et max_execution_time sont trop faibles ; il vaut mieux importer depuis la console |
Des milliers de requêtes vers /phpmyadmin dans les logs | Balayage de routine — le panneau doit être fermé |
| Le panneau fonctionne, mais pas le site | Le pool PHP-FPM partagé est épuisé par les requêtes lourdes du panneau |
Les dumps via un panneau web sur de grosses bases de données expirent. Une vraie sauvegarde se fait depuis la console selon un planning — sauvegardes de base de données.