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 de base 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é est 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é.
Table des matières
- Prérequis
- Étape 1 — Mettre à jour le système et l’index des paquets
- Étape 2 — Installer phpMyAdmin
- Étape 3 — Configurer Apache pour phpMyAdmin
- Étape 4 — Sécuriser phpMyAdmin avec l’authentification HTTP Basic
- Étape 5 — Restreindre l’accès par adresse IP (Optionnel mais recommandé)
- Étape 6 — Activer SSL pour chiffrer le trafic
- Étape 7 — Accéder à phpMyAdmin
- Dépannage des problèmes courants
- Conclusion
Prérequis {#prerequisites}
Avant de commencer, assurez-vous que les exigences suivantes sont en place :
- Un serveur exécutant Ubuntu 20.04 ou 22.04 (physique ou virtuel)
- MySQL ou MariaDB installé et activement 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éal pour exécuter phpMyAdmin en toute sécurité.
Étape 1 — Mettre à jour le système et l’index des paquets {#step-1}
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 {#step-2}
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 attentivement :
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’espace 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é à indiquer si vous souhaitez configurer une base de données pour phpMyAdmin en utilisant dbconfig-common :
Configure database for phpmyadmin with dbconfig-common?Sélectionnez Oui. Vous serez alors 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-le 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 {#step-3}
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 devrait 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 {#step-4}
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 porte de mot de passe avant que les utilisateurs ne voient même 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 votre nom d’utilisateur choisi :
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 écrasera 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, naviguer vers /phpmyadmin 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 (Optionnel mais recommandé) {#step-5}
Pour une protection encore plus forte, limitez l’accès à phpMyAdmin à des adresses IP de confiance uniquement. Ceci est particulièrement utile si vous accédez toujours à votre serveur à partir d’une adresse 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 des 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 adresse IP statique, ou fiez-vous uniquement à l’authentification HTTP Basic combinée à SSL.
Étape 6 — Activer SSL pour chiffrer le trafic {#step-6}
Envoyer les identifiants de base de données sur HTTP simple est un risque de sécurité critique. Vous devriez 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 et auto-renouvelable.
Option B — Utiliser un certificat SSL commercial
Pour les environnements de production traitant des données sensibles, un certificat SSL émis commercialement offre des signaux de confiance plus forts et une protection de garantie. Vous pouvez obtenir des certificats SSL de confiance directement auprès d’AlexHost SSL Certificates, avec des options allant de la 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 {#step-7}
Avec 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 en séquence :
- 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 {#troubleshooting}
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 lien symbolique existe :
ls -la /etc/apache2/conf-available/phpmyadmin.confErreur « Cannot Connect to MySQL Server »
Vérifiez que MySQL/MariaDB s’exécute :
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 passer en direct, 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 MySQL root désactivée à distance | ✅ |
URL phpMyAdmin modifiée à partir de la valeur par défaut /phpmyadmin | Recommandé |
| Mises à jour système régulières planifiées | ✅ |
| Pare-feu (UFW) configuré | Recommandé |
