Comment installer et sécuriser phpMyAdmin sur Ubuntu (Guide complet)
phpMyAdmin est l’un des outils open-source les plus largement utilisés pour gérer les bases de données MySQL et MariaDB via une interface graphique basée sur un navigateur. Que vous soyez développeur, administrateur système ou propriétaire de site web, il simplifie considérablement les opérations complexes sur les bases de données — de l’exécution de requêtes SQL à l’importation/exportation de données — sans nécessiter d’expertise en ligne de commande.
Cependant, comme phpMyAdmin est accessible via une URL publique par défaut, le laisser non sécurisé présente un risque grave. Ce guide complet vous guide à travers l’installation de phpMyAdmin sur Ubuntu 20.04/22.04, sa configuration avec Apache, et son renforcement contre les accès non autorisés en utilisant plusieurs couches de sécurité.
Prérequis
Avant de commencer, assurez-vous que les conditions suivantes sont en place :
- Un serveur exécutant Ubuntu 20.04 ou 22.04 (physique ou virtuel)
- MySQL ou MariaDB installé et en cours d’exécution
- Le serveur web Apache2 installé
- Un compte utilisateur avec privilèges sudo
- Un nom de domaine ou une adresse IP statique pointant vers votre serveur
- (Recommandé) Un certificat SSL valide pour l’accès HTTPS chiffré
> Conseil : Si vous n’avez pas encore d’environnement serveur, envisagez AlexHost VPS Hosting — des plans VPS Linux entièrement gérés ou non gérés avec provisionnement instantané, accès root et stockage SSD, idéaux pour exécuter phpMyAdmin en toute sécurité.
Étape 1 — Mettre à jour le système et l’index des paquets
Commencez toujours par actualiser vos listes de paquets et appliquer les mises à jour système en attente. Cela garantit que vous installez la dernière version disponible de phpMyAdmin et évitez les conflits de dépendances.
sudo apt update && sudo apt upgrade -yÉtape 2 — Installer phpMyAdmin
Installez phpMyAdmin en utilisant le référentiel APT officiel d’Ubuntu :
sudo apt install phpmyadmin -yPendant l’installation, un assistant de configuration interactif apparaîtra. Suivez ces étapes avec attention :
2.1 — Choisir un serveur Web
Vous serez invité à sélectionner un serveur Web à configurer automatiquement :
Please choose the web server that should be automatically configured to run phpMyAdmin.
[*] apache2
[ ] lighttpdUtilisez la barre d’espacement pour sélectionner apache2, puis appuyez sur Tab pour mettre en surbrillance <Ok> et appuyez sur Entrée.
2.2 — Configurer la base de données avec dbconfig-common
Ensuite, vous serez invité à configurer une base de données pour phpMyAdmin en utilisant dbconfig-common :
Configure database for phpmyadmin with dbconfig-common?Sélectionnez Oui. Vous serez ensuite invité à entrer un mot de passe d’application MySQL pour l’utilisateur de base de données interne de phpMyAdmin. Entrez un mot de passe fort ou laissez vide pour en générer un automatiquement.
2.3 — Vérifier l’installation
Une fois l’installation terminée, confirmez que phpMyAdmin est installé :
dpkg -l phpmyadminVous devriez voir une ligne affichant la version du paquet installé.
Étape 3 — Configurer Apache pour phpMyAdmin
Dans certaines configurations Ubuntu, le fichier de configuration Apache de phpMyAdmin n’est pas automatiquement activé. Vérifiez et activez-le manuellement.
3.1 — Activer la configuration phpMyAdmin
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin3.2 — Vérifier le fichier de configuration
Ouvrez le fichier de configuration pour examiner son contenu :
sudo nano /etc/apache2/conf-available/phpmyadmin.confLe fichier doit contenir les directives suivantes (ou similaires) :
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
</Directory>
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
</Directory>Enregistrez et fermez le fichier avec CTRL+X, puis Y, puis Entrée.
3.3 — Redémarrer Apache
Appliquez les modifications de configuration :
sudo systemctl restart apache2Vérifiez qu’Apache s’exécute sans erreurs :
sudo systemctl status apache2Étape 4 — Sécuriser phpMyAdmin avec l’authentification HTTP Basic
Par défaut, quiconque connaît l’adresse IP de votre serveur peut accéder à la page de connexion phpMyAdmin. L’ajout d’une couche d’authentification HTTP Basic crée une deuxième barrière de mot de passe avant même que les utilisateurs ne voient le formulaire de connexion phpMyAdmin.
4.1 — Installer apache2-utils
sudo apt install apache2-utils -y4.2 — Créer le fichier de mot de passe et l’utilisateur
Créez un fichier .htpasswd et ajoutez votre premier utilisateur administratif. Remplacez your_admin_user par le nom d’utilisateur de votre choix :
sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_userVous serez invité à entrer et confirmer un mot de passe. Pour ajouter des utilisateurs supplémentaires ultérieurement (sans le drapeau -c, qui écraserait le fichier) :
sudo htpasswd /etc/phpmyadmin/.htpasswd another_user4.3 — Mettre à jour la configuration Apache de phpMyAdmin
Modifiez le fichier de configuration phpMyAdmin pour appliquer l’authentification :
sudo nano /etc/apache2/conf-available/phpmyadmin.confLocalisez le bloc <Directory /usr/share/phpmyadmin> et ajoutez les lignes suivantes à l’intérieur :
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
# HTTP Basic Authentication
AuthType Basic
AuthName "Restricted Access — Authorized Personnel Only"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
<IfModule mod_authz_core.c>
<RequireAny>
Require valid-user
</RequireAny>
</IfModule>
</Directory>Enregistrez et fermez le fichier.
4.4 — Redémarrer Apache
sudo systemctl restart apache2Maintenant, la navigation vers /phpmyadmin vous demandera d’abord les identifiants d’authentification HTTP avant d’afficher la page de connexion phpMyAdmin.
Étape 5 — Restreindre l’accès par adresse IP (Facultatif mais recommandé)
Pour une protection encore plus forte, restreignez l’accès à phpMyAdmin aux adresses IP de confiance uniquement. C’est particulièrement utile si vous accédez toujours à votre serveur à partir d’une IP fixe (comme un réseau de bureau ou un VPN).
Modifiez la configuration Apache de phpMyAdmin :
sudo nano /etc/apache2/conf-available/phpmyadmin.confModifiez le bloc <Directory> pour inclure les restrictions basées sur l’IP :
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/phpmyadmin/.htpasswd
<RequireAll>
Require valid-user
Require ip 203.0.113.50
# Add more trusted IPs below:
# Require ip 198.51.100.0/24
</RequireAll>
</Directory>Remplacez 203.0.113.50 par votre adresse IP ou sous-réseau de confiance réel. Enregistrez le fichier et redémarrez Apache :
sudo systemctl restart apache2> Remarque : Si votre adresse IP change fréquemment, envisagez d’utiliser un VPN avec une IP statique, ou fiez-vous à HTTP Basic Authentication seul combiné avec SSL.
Étape 6 — Activer SSL pour chiffrer le trafic
Envoyer les identifiants de base de données en HTTP simple est un risque de sécurité critique. Vous devez toujours accéder à phpMyAdmin via HTTPS. Il y a deux approches principales :
Option A — Utiliser un certificat SSL Let’s Encrypt (Gratuit)
Si vous avez un nom de domaine pointant vers votre serveur, installez Certbot :
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.comCertbot configurera automatiquement Apache pour rediriger HTTP vers HTTPS et installera un certificat gratuit à renouvellement automatique.
Option B — Utiliser un certificat SSL commercial
Pour les environnements de production traitant des données sensibles, un certificat SSL émis commercialement fournit des signaux de confiance plus forts et une protection de garantie. Vous pouvez obtenir des certificats SSL de confiance directement auprès d’AlexHost Certificats SSL, avec des options allant des certificats de validation de domaine (DV) aux certificats de validation étendue (EV).
Après avoir installé votre certificat SSL, assurez-vous que votre URL phpMyAdmin utilise https:// :
https://yourdomain.com/phpmyadminÉtape 7 — Accéder à phpMyAdmin
Une fois l’installation et les mesures de sécurité en place, ouvrez votre navigateur et accédez à :
https://your_server_ip_or_domain/phpmyadminVous rencontrerez deux invites d’authentification successives :
- Invite d’authentification HTTP Basic — Entrez le nom d’utilisateur et le mot de passe que vous avez créés avec
htpasswd - Page de connexion phpMyAdmin — Entrez votre nom d’utilisateur MySQL/MariaDB (par exemple,
root) et son mot de passe
Une fois connecté avec succès, vous aurez un accès complet à vos bases de données MySQL via l’interface graphique phpMyAdmin.
Dépannage des problèmes courants
phpMyAdmin retourne une erreur 404 Not Found
La configuration Apache peut ne pas être liée ou activée. Exécutez :
sudo a2enconf phpmyadmin
sudo systemctl reload apache2Vérifiez également que le symlink existe :
ls -la /etc/apache2/conf-available/phpmyadmin.confErreur « Cannot Connect to MySQL Server »
Vérifiez que MySQL/MariaDB est en cours d’exécution :
sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadbS’il est arrêté, démarrez-le :
sudo systemctl start mysqlErreur HTTP 500 Internal Server Error
Cela indique souvent qu’un module PHP est manquant. Installez les extensions PHP requises :
sudo apt install php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl restart apache2Page vierge après la connexion
Videz le cache de votre navigateur, ou vérifiez les journaux d’erreurs Apache pour plus de détails :
sudo tail -f /var/log/apache2/error.logRésumé des meilleures pratiques de sécurité
Avant de mettre en ligne, consultez cette liste de contrôle de sécurité :
| Mesure de sécurité | Statut |
|---|---|
| Authentification HTTP Basic activée | ✅ |
| SSL/HTTPS configuré | ✅ |
| Restriction IP appliquée (le cas échéant) | ✅ |
| Connexion à distance MySQL root désactivée | ✅ |
URL phpMyAdmin modifiée par rapport à la valeur par défaut /phpmyadmin | Recommandé |
| Mises à jour système régulières planifiées | ✅ |
| Pare-feu (UFW) configuré | Recommandé |
Renommer l’URL phpMyAdmin (étape de renforcement bonus)
Modifier le chemin d’URL par défaut /phpmyadmin en quelque chose de moins prévisible réduit considérablement les attaques de bots automatisés. Modifiez la configuration Apache :
sudo nano /etc/apache2/conf-available/phpmyadmin.confModifier :
Alias /phpmyadmin /usr/share/phpmyadminEn quelque chose de moins évident :
Alias /db-manager-2024 /usr/share/phpmyadminRedémarrez Apache et mettez à jour vos signets en conséquence.
Conclusion
L’installation de phpMyAdmin sur Ubuntu est un processus simple, mais le sécuriser correctement est non-négociable. En combinant l’authentification HTTP Basic, les restrictions d’accès basées sur l’IP, le chiffrement SSL et un alias d’URL personnalisé, vous créez plusieurs couches de défense qui se chevauchent et protègent vos bases de données contre les accès non autorisés et les attaques automatisées.
Pour résumer ce que nous avons couvert :
- ✅ Installation de phpMyAdmin via APT sur Ubuntu 20.04/22.04
- ✅ Configuration d’Apache pour servir phpMyAdmin correctement
- ✅ Ajout de l’authentification HTTP Basic comme deuxième barrière de sécurité
- ✅ Restriction de l’accès par adresses IP de confiance
- ✅ Activation de SSL/HTTPS pour chiffrer tout le trafic
- ✅ Durcissement supplémentaire en renommant l’URL par défaut
Une configuration sécurisée de phpMyAdmin n’est aussi solide que le serveur sur lequel elle s’exécute. Pour une base fiable et haute performance, explorez AlexHost Dedicated Servers pour un contrôle matériel complet, ou AlexHost Shared Web Hosting pour les projets légers qui ont besoin d’un environnement géré. Si vous avez besoin d’un panneau de contrôle pour gérer votre serveur aux côtés de phpMyAdmin, consultez AlexHost VPS with cPanel pour une expérience de gestion tout-en-un.
Maintenez votre système à jour, surveillez régulièrement vos journaux d’accès et révisitez votre configuration de sécurité chaque fois que vous mettez à niveau phpMyAdmin ou votre version d’Ubuntu. Quelques minutes de durcissement proactif aujourd’hui peuvent prévenir une violation de données catastrophique demain.
sur tous les services d'hébergement