Ce tutoriel vous montrera comment installer phpMyAdmin avec Nginx, MariaDB et PHP7.2 (LEMP) sur Ubuntu 18.04. phpMyAdmin est un outil de gestion de base de données Web gratuit et open-source écrit en PHP. Il fournit une interface Web graphique permettant aux utilisateurs de gérer la base de données MySQL ou MariaDB. Vous apprendrez également comment activer l'authentification à deux facteurs sur phpMyAdmin.
Prérequis
Pour suivre ce tutoriel, vous devez avoir un système d'exploitation Ubuntu 18.04 en cours d'exécution sur votre ordinateur local ou sur un serveur distant. Si vous recherchez un VPS (Virtual Private Server), vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 100 $ sur DigitalOcean. (Pour les nouveaux utilisateurs uniquement). Si vous êtes déjà un utilisateur de DigitalOcean, vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 50 $ sur Vultr (pour les nouveaux utilisateurs uniquement).
Il est supposé que vous avez déjà installé la pile LEMP sur Ubuntu 18.04. Si ce n'est pas le cas, veuillez consulter le didacticiel suivant.
- Comment installer la pile LEMP (Nginx, MariaDB, PHP7.2) sur Ubuntu 18.04
Cela dit, commençons par installer phpMyAdmin.
Étape 1 :Téléchargez et installez phpMyAdmin
phpMyAdmin est inclus dans le référentiel de logiciels Ubuntu 18.04, nous pouvons donc facilement l'installer avec la commande suivante.
sudo apt update sudo apt install phpmyadmin
Lors de l'installation, il vous sera demandé de sélectionner un serveur Web à configurer. Nginx n'est pas dans la liste, alors appuyez sur la touche Tab et appuyez sur OK pour ignorer cette étape.
Ensuite, sélectionnez Oui pour créer une nouvelle base de données et laissez dbconfig-common
pour le configurer.
Cela créera également un nouvel utilisateur de base de données nommé phpmyadmin
. Donnez un mot de passe à cet utilisateur.
Une fois cela fait, une nouvelle base de données nommée phpmyadmin
est créé et l'utilisateur de la base de données phpmyadmin
dispose des privilèges nécessaires pour gérer cette base de données. Si vous êtes curieux comme moi, vous pouvez vous connecter à MariaDB et vérifier quels privilèges phpmyadmin
l'utilisateur a été autorisé.
Vous pouvez utiliser la commande suivante pour vous connecter au serveur MariaDB.
sudo mysql -u root
Vérifiez ensuite les privilèges.
show grants for [email protected];
Sortie :
Comme vous pouvez le voir, l'utilisateur phpmyadmin
a tous les privilèges sur la base de données phpmyadmin
. Vous pouvez maintenant quitter en exécutant :
exit;
Étape 2 :Créer un bloc de serveur Nginx
Pour pouvoir accéder à l'interface Web de phpMyAdmin, nous devons créer un bloc de serveur Nginx en exécutant la commande suivante.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Nous allons le configurer pour pouvoir accéder à phpMyAdmin via un sous-domaine. Collez le texte suivant dans le fichier. Remplacez pma.example.com
avec votre sous-domaine actuel et n'oubliez pas de créer un enregistrement A pour celui-ci.
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
Vos fichiers phpMyAdmin sont dans /usr/share/phpmyadmin/
annuaire. Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
Vous devriez maintenant pouvoir accéder à l'interface Web de phpMyAdmin via
pma.example.com
Notez que phpMyAdmin ne fonctionnera pas dans les versions récentes de Firefox. Vous pouvez utiliser Google Chrome pour visiter l'interface Web de phpMyAdmin. Avant de saisir les informations d'identification de l'utilisateur dans le formulaire de connexion, activons HTTPS.
Étape 3 :Installer le certificat TLS
Pour sécuriser l'interface web de phpMyadmin, nous pouvons installer un certificat Let's Encrypt TLS gratuit. Installez le client Let's Encrypt à partir du référentiel de logiciels Ubuntu 18.04 comme ci-dessous :
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
est le plugin Nginx pour Certbot. Exécutez maintenant la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address
Explication :
- –nginx :Utilisez l'authentificateur et le programme d'installation Nginx
- –d'accord :Acceptez les conditions d'utilisation de Let's Encrypt
- –redirection :Ajoutez une redirection 301.
- –hsts :Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP.
- –agrafe-ocsp :Active l'agrafage OCSP.
- –doit-agrafer :Ajoute l'extension OCSP Must Staple au certificat.
- -d flag est suivi d'une liste de noms de domaine, séparés par une virgule. Vous pouvez ajouter jusqu'à 100 noms de domaine.
- –e-mail :E-mail utilisé pour l'enregistrement et le contact de récupération.
Il vous sera demandé si vous souhaitez recevoir des e-mails de l'EFF (Electronic Frontier Foundation). Après avoir choisi O ou N, votre certificat TLS sera automatiquement obtenu et configuré pour vous, ce qui est indiqué par le message ci-dessous.
Testez votre certificat TLS
Accédez à ssllabs.com pour tester votre certificat et votre configuration TLS. Vous devriez obtenir A+ car HSTS est activé.
Résoudre les erreurs de connexion
Si vous vous connectez avec un compte root MariaDB, vous pouvez voir l'erreur suivante.
#1698 - Access denied for user 'root '@'localhost'
et
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
Si vous vous connectez avec l'utilisateur phpmyadmin
, vous ne verrez pas l'erreur ci-dessus. Cependant, l'utilisateur phpmyadmin
ne peut être utilisé que pour administrer le phpmyadmin
base de données. La cause de l'erreur est que par défaut l'utilisateur root de MariDB est authentifié via le plugin unix_socket, au lieu d'utiliser le mysql_native_password
brancher. Pour contourner ce problème, nous pouvons créer un autre utilisateur administrateur et accorder tous les privilèges au nouvel utilisateur administrateur.
Connectez-vous au serveur MariaDB à partir de la ligne de commande.
sudo mariadb -u root
Créez un utilisateur administrateur avec authentification par mot de passe.
create user [email protected] identified by 'your-chosen-password';
Accordez tous les privilèges sur toutes les bases de données.
grant all privileges on *.* to [email protected] with grant option;
Vider les privilèges et quitter ;
flush privileges; exit;
Vous pouvez maintenant vous connecter à phpMyAmin avec le compte administrateur et gérer toutes les bases de données.
Utiliser un port différent
L'utilisation d'un port différent au lieu du port par défaut 443 peut être avantageuse car vous pouvez fermer ce port lorsque vous n'utilisez pas phpMyAdmin pour empêcher toute activité de piratage, ou vous pouvez spécifier quelles adresses IP sont autorisées à accéder à ce port. C'est très simple à configurer. Ouvrez simplement le fichier de blocage du serveur.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Trouvez les deux lignes suivantes :
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
Remplacez 443 par un autre port, par exemple 8443.
listen [::]:8443 ssl ipv6only=on; # managed by Certbot listen 8443 ssl; # managed by Certbot
Vous pouvez également leur ajouter http2 comme ci-dessous pour activer le protocole HTTP/2.
listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot listen 8443 ssl http2; # managed by Certbot
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
Vous pouvez désormais accéder à phpMyAdmin via :
https://pma.example.com:8443
Installer la dernière version stable de phpMyAdmin
Le référentiel Ubuntu 18.04 est livré avec PHP7.2 et phpMyAdmin 4.6.6. Vous pouvez vérifier votre version de phpMyAdmin dans la barre de titre du navigateur.
Cependant, PHP7.2 est supporté par phpMyAdmin depuis la version 4.7.4. Lorsque vous utilisez phpMyAdmin 4.6.6 avec PHP7.2, vous verrez le message d'avertissement suivant.
parameter must be an array or an object that implements countable
Pour résoudre le problème de compatibilité, nous pouvons installer phpMyAdmin 4.8, qui est la dernière version stable à ce jour. Téléchargez-le en utilisant wget
.
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip
Ensuite, extrayez-le.
sudo apt install unzip unzip phpMyAdmin-4.8.0.1-all-languages.zip
Sauvegardez les fichiers phpMyAdmin d'origine.
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original
Déplacez phpMyadmin 4.8 vers /usr/share/phpmyadmin/
répertoire.
sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin
Modifiez le fichier de configuration du fournisseur.
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
Trouvez la ligne suivante.
define('CONFIG_DIR', '');
Changez-le en
define('CONFIG_DIR', '/etc/phpmyadmin/');
Enregistrez et fermez le fichier. Créez ensuite le tmp
dossier pour stocker les fichiers de cache.
sudo mkdir /usr/share/phpmyadmin/tmp
Modifier la propriété de l'utilisateur et la propriété du groupe en www-data
.
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp
Vous pouvez désormais utiliser phpMyAdmin 4.8 sans recharger ni redémarrer Nginx.
Activer l'authentification à deux facteurs
Vous pouvez également renforcer phpMyAdmin en activant l'authentification à deux facteurs, qui est une fonctionnalité ajoutée dans la version 4.8. Pour l'activer, connectez-vous à phpMyAdmin. Allez ensuite dans Settings
-> Two-factor authentication
et sélectionnez Application d'authentification (2FA) .
Après avoir cliqué sur Configurer l'authentification à deux facteurs bouton, un code QR vous sera présenté, que vous devrez scanner avec une application d'authentification à deux facteurs sur votre téléphone.
Google Authenticator est une application 2FA populaire, mais je recommande FreeOTP, qui est une application 2FA open source développée par Red Hat. Une fois que vous avez entré le code d'authentification généré par votre application 2FA, l'authentification à deux facteurs est activée. Si vous vous déconnectez et vous reconnectez maintenant, vous devez entrer le code d'authentification en plus du nom d'utilisateur et du mot de passe.
Renouvellement automatique du certificat
Pour renouveler automatiquement le certificat Let's Encrypt, modifiez simplement le fichier crontab de l'utilisateur root.
sudo crontab -e
Ajoutez ensuite la ligne suivante en bas.
@daily certbot renew --quiet && systemctl reload nginx
--quiet
flag supprimera la sortie standard. Si vous souhaitez recevoir une erreur standard, ajoutez la ligne suivante au début du fichier crontab.
MAILTO=your-email-address
Le rechargement de Nginx est nécessaire pour présenter le nouveau certificat aux clients.
J'espère que ce tutoriel vous a aidé à installer phpMyAdmin avec Nginx sur Ubuntu 18.04 LTS. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de conseils et astuces. Prenez soin de vous.