Skip to content
VDS · Bases de données

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ômeCause
Le navigateur télécharge adminer.phpPHP n'est pas connecté à ce chemin
#1045 Access deniedL'utilisateur de la base de données est lié à un autre hôte
L'import d'un gros dump est interrompuupload_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 logsBalayage de routine — le panneau doit être fermé
Le panneau fonctionne, mais pas le siteLe 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.