phpMyAdmin sur Debian
DOG&DEV · 25/01/2025
phpMyAdmin sur Debian
phpMyAdmin permet d’administrer MySQL ou MariaDB via une interface web. Ce guide décrit l’installation sur Debian avec Apache ou Nginx, la configuration de base et la sécurisation (auth, IP, HTTPS).
Prérequis
- Debian 11 ou 12
- MySQL ou MariaDB installé et opérationnel
- Apache ou Nginx + PHP avec extensions (mysql, mysqli, etc.)
- Accès root ou sudo
Installation
sudo apt update
sudo apt install phpmyadmin
Le paquet demande : serveur web (Apache ou lighttpd — si vous utilisez Nginx, choisir apache2 pour installer les dépendances PHP, puis configurer Nginx à la main ; ou installer les paquets PHP à part et ignorer le serveur proposé).
Pour Nginx, installez d’abord PHP et les extensions :
sudo apt install php php-mysql php-mbstring php-zip php-gd
sudo apt install phpmyadmin
Si le script ne propose que Apache/lighttpd, les fichiers phpMyAdmin seront dans /usr/share/phpmyadmin/. On configure Nginx pour pointer vers ce répertoire (ou une copie).
Configuration Apache
Si vous avez choisi Apache, un alias ou un virtualhost est en général créé. Accès type : http://IP_du_serveur/phpmyadmin.
Pour un VirtualHost dédié (recommandé pour restreindre l’accès) :
<VirtualHost *:80>
ServerName pma.votredomaine.local
DocumentRoot /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Configuration Nginx
Exemple pour servir phpMyAdmin sous /phpmyadmin :
server {
listen 80;
server_name _;
root /usr/share/phpmyadmin;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Ou, si vous avez déjà un server pour un site, ajoutez une location :
location /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
(À adapter selon votre root et votre fastcgi_pass.)
Recharger Nginx : sudo nginx -t && sudo systemctl reload nginx.
Configuration phpMyAdmin (config.inc.php)
Fichier : /etc/phpmyadmin/config.inc.php ou /usr/share/phpmyadmin/config.inc.php (selon la version). Souvent, un config.sample.inc.php sert de base.
- Authentification : par défaut, phpMyAdmin utilise les utilisateurs MySQL. Créer un utilisateur dédié (pas
root) :
CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mot_de_passe_fort';
GRANT SELECT, INSERT, UPDATE, DELETE ON mysql.* TO 'pma'@'localhost';
FLUSH PRIVILEGES;
- blowfish_secret : pour le stockage des cookies, définir une chaîne aléatoire dans
$cfg['blowfish_secret'].
Sécurisation
- HTTPS : servir phpMyAdmin uniquement en HTTPS (Let’s Encrypt, reverse proxy).
- Restriction par IP : dans Nginx ou Apache, limiter l’accès à votre IP ou à un VPN :
Nginx :
location /phpmyadmin {
allow 203.0.113.50;
deny all;
# ... alias, php, etc.
}
Apache :
<Directory /usr/share/phpmyadmin>
Require ip 203.0.113.50
</Directory>
- Sous-domaine ou chemin peu évident : éviter
/phpmyadminsi trop exposé ; par ex./gestion-db-xyzou un sous-domaine dédié. - Suppression des scripts de test et d’exemples s’ils existent.
Dépannage
| Symptôme | Cause possible | Correctif |
|---|---|---|
| « Cannot connect to MySQL » | MySQL non démarré, mauvais user/host, socket | systemctl status mysql ; vérifier user/host (localhost, 127.0.0.1) et config.inc.php |
| 404 | Mauvais root/alias, mauvaise location |
Vérifier le chemin /usr/share/phpmyadmin et la config Nginx/Apache |
| Erreur 500 | PHP, extensions, droits | Vérifier php -m (mysqli, etc.) ; logs PHP et Nginx/Apache ; droits sur /usr/share/phpmyadmin |
Bonnes pratiques
- Utiliser un utilisateur MySQL dédié avec des droits limités au besoin.
- Ne pas exposer phpMyAdmin sur 0.0.0.0 sans restriction ; IP ou VPN.
- Pour la gestion MySQL sur Windows : mysql-windowsserver ; pour la connexion depuis FiveM : fivem-sql ; pour Laravel : laravel-plesk-website.
Ressources
Cet article s’inscrit dans notre série de guides hébergement et gaming. Pour un serveur sur-mesure, contact.