Comment installer phpMyAdmin avec Nginx sur Debian 12, 11 ou 10

phpMyAdmin est un outil open source largement utilisé écrit en PHP, conçu pour gérer l'administration de MySQL et MariaDB sur le Web. Il offre une interface graphique intuitive pour effectuer diverses opérations de base de données telles que la création, la modification et la suppression de bases de données, de tables, de champs ou de lignes, l'exécution d'instructions SQL et la gestion des autorisations des utilisateurs. L'installation de phpMyAdmin sur Debian 12, 11 ou 10 implique la configuration manuelle de la pile LEMP (Linux, NGINX, MySQL/MariaDB, PHP), suivie du téléchargement et de la configuration de la dernière version de phpMyAdmin.

L'utilisation de phpMyAdmin simplifie la gestion de la base de données, la rendant accessible même aux utilisateurs qui ne sont pas à l'aise avec l'utilisation de la ligne de commande pour les opérations de base de données. Ce guide vous guidera à travers les étapes pour installer manuellement la pile LEMP, configurer phpMyAdmin et sécuriser votre configuration.

Installez LEMP Stack sur Debian pour phpMyAdmin

Étape 1 : Actualisation du système Debian

Commencez à mettre à jour votre système Debian avec les packages les plus récents pour une configuration sécurisée et sans erreur. Cette étape proactive vise à réduire la probabilité de conflits pendant le processus d'installation.

sudo apt update && sudo apt upgrade

Si vous mettez à jour le noyau ou de nombreux packages, un redémarrage est nécessaire.

Étape 2 : Installer Nginx

Tout d’abord, installez Nginx pour établir une pile LEMP. Exécutez la commande suivante :

sudo apt install nginx

En règle générale, le système active le service Nginx par défaut après l'installation. Cependant, vérifiez toujours prudemment son état et assurez-vous qu’il fonctionne comme prévu :

systemctl status nginx

Si le serveur n'est pas actif, utilisez la commande suivante pour activer Nginx et assurez-vous qu'il démarre automatiquement à chaque redémarrage :

sudo systemctl enable nginx --now

Cette commande installe la version par défaut de Nginx.

Remarque : Si vous souhaitez déployer la dernière version stable ou principale de Nginx, pensez à suivre notre guide sur comment mettre à niveau Nginx sur Debian 12, 11 ou 10 Linux.

Étape 3 : Installer MariaDB

Ensuite, installez le composant de base de données dans la configuration de la pile LEMP. Beaucoup choisissent MariaDB plutôt que MySQL en raison de ses performances supérieures et de ses fonctionnalités supplémentaires.

Pour installer MariaDB, exécutez ce qui suit :

sudo apt install mariadb-server mariadb-client

Remarque : Si vous souhaitez installer une version différente de MariaDB à partir des référentiels officiels MariaDB.org, notre guide sur installer MariaDB 11.x ou 10.x sur Debian 12, 11 ou 10 Linux.

Une fois terminé, confirmez l'activation et le bon fonctionnement du service MariaDB, similaire à votre vérification de Nginx :

systemctl status mariadb

Si MariaDB n'est pas activé, utilisez la commande ci-dessous pour l'activer et vous assurer qu'il démarre au redémarrage.

sudo systemctl enable mariadb --now

Pour renforcer la sécurité de votre MariaDB, exécutez le script de sécurité fourni, mysql_secure_installation, pendant le processus d'installation. Les paramètres par défaut d'une nouvelle installation de MariaDB laissent souvent des vulnérabilités que des acteurs malveillants peuvent exploiter.

sudo mysql_secure_installation

L'exécution du script de sécurité vous guide à travers plusieurs étapes pour renforcer la sécurité de votre MariaDB. Ces étapes impliquent la définition du mot de passe root, la limitation de l'accès à distance, la suppression des comptes d'utilisateurs anonymes et la suppression de la base de données de test.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y <---- Type Y then press the ENTER KEY.
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y <---- Type Y then press the ENTER KEY.
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y <---- Type Y then press the ENTER KEY.
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Étape 4 : Installer PHP

Installez le service PHP pour terminer la configuration de la pile LEMP. PHP, via le service PHP-FPM et les modules supplémentaires nécessaires à phpMyAdmin, sert de pont entre Nginx et MariaDB.

Remarque : Si vous souhaitez installer une version spécifique de PHP, référez-vous à notre guide sur installer n'importe quelle version de PHP 8.x disponible sur Debian 12, 11 ou 10 Linux.

Pour déployer PHP et PHP-FPM, ainsi que les modules nécessaires sur votre système Debian, exécutez ce qui suit :

sudo apt install php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-cli php-curl php-zip php-gd

Après l'installation de PHP, confirmez l'état du service PHP, comme vous l'avez fait pour MariaDB et Nginx.

Pour PHP 8.2, qui est la version par défaut sur Debian Bookworm, par exemple, la commande spécifique serait :

systemctl status php8.2-fpm

Si le service PHP reste inactif, utilisez la commande suivante pour l'activer et vous assurer qu'il démarre automatiquement à chaque redémarrage.

sudo systemctl enable php-fpm --now

Finaliser phpMyAdmin avec Nginx et Debian

Cette section explique la procédure d'obtention de l'archive phpMyAdmin et de configuration des répertoires, autorisations et entrées de base de données requis.

Étape 1 : Créer un super utilisateur pour phpMyAdmin

Classiquement, vous pouvez accéder à phpMyAdmin en utilisant l'utilisateur root. Cependant, pour respecter des pratiques de sécurité robustes, créez un superutilisateur distinct au lieu d'utiliser l'utilisateur root. Ce concept s'aligne sur la pratique Linux consistant à exploiter un utilisateur sudo au lieu de se connecter directement en tant que root.

Tout d’abord, authentifiez-vous dans l’interface du terminal :

sudo mariadb -u root

Une fois l'authentification réussie, l'étape suivante consiste à créer une base de données dans le terminal MariaDB.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Ensuite, créez un utilisateur et accordez-lui les autorisations requises, comme illustré ci-dessous :

GRANT ALL PRIVILEGES ON *.* TO 'PMAUSER'@'localhost' IDENTIFIED BY 'password here change' WITH GRANT OPTION;

Remplacement du mot de passe d'espace réservé "le mot de passe ici change" avec un mot de passe sécurisé est essentiel avant d’exécuter les commandes.

Après avoir établi l'utilisateur et défini les autorisations, n'oubliez pas d'actualiser les privilèges pour les modifications.

FLUSH PRIVILEGES;

Pour quitter le terminal MariaDB, utilisez la commande suivante.

QUIT;

Étape 2 : Téléchargez le code source de phpMyAdmin

Cette section explique comment se procurer l'archive source pour phpMyAdmin. L'exploitation du terminal de ligne de commande constitue une méthode efficace pour télécharger la dernière version dans toutes les langues.

Pour télécharger l'archive phpMyAdmin, exécutez la commande suivante dans le terminal.

DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz

Si vous désirez la version anglaise uniquement de phpMyAdmin, remplacez la dernière ligne de la commande précédente par ce qui suit :

wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-english.tar.gz

Après le téléchargement, l'étape suivante consiste à extraire l'archive phpMyAdmin en exécutant la commande ci-dessous :

tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz

Étape 3 : Configurer phpMyAdmin

La phase suivante consiste à migrer tous les fichiers extraits vers leur destination finale dans le répertoire /var/www/ à l'aide de la commande mv.

sudo mv phpMyAdmin-*/ /var/www/phpmyadmin

Lorsque vous installez phpMyAdmin depuis la source, vous remarquerez qu'un répertoire TMP n'existe pas par défaut. Par conséquent, il serait préférable que vous créiez ce répertoire manuellement.

sudo mkdir /var/www/phpmyadmin/tmp

Le répertoire phpMyAdmin comprend un exemple de fichier de configuration par défaut, que vous devez renommer pour que phpMyAdmin le reconnaisse. Utilisez la commande CP pour créer une copie du fichier par défaut dans le répertoire /var/www/phpmyadmin/, garantissant une sauvegarde.

Pour répliquer config.sample.inc.php vers config.inc.php, exécutez la commande suivante :

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

Après avoir copié le fichier, ouvrez-le avec votre éditeur de texte préféré. Dans cet exemple, nous utilisons l'éditeur de texte nano :

sudo nano /var/www/phpmyadmin/config.inc.php

phpMyAdmin utilise un chiffre Blowfish. Pour modifier ce paramètre, accédez à la ligne qui commence par $cfg['blowfish_secret'].

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Attribuez une chaîne de 32 caractères aléatoires entre guillemets simples. Utilisez le programme pwgen comme méthode pratique pour générer cette chaîne. Exécutez la commande de terminal suivante pour installer pwgen :

Cela permet de garder toutes les actions claires et directement attribuées à l'utilisateur (ou à celui qui effectue l'action).

sudo apt install pwgen 

Après l'installation, exécutez la commande ci-dessous :

pwgen -s 32 1

Cette commande générera une chaîne de 32 caractères aléatoires pour servir de secret Blowfish.

Exemple d'insertion du chiffre dans le fichier de configuration (Ne pas copier):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Exemple dans le fichier de configuration :

Pour la majorité des utilisateurs, les paramètres par défaut restants devraient être suffisants. Cependant, si votre serveur est situé sur un autre serveur de votre réseau, vous devrez localiser et modifier la ligne $cfg['Servers'][$i]['host'] pour refléter l'adresse IP privée. Une illustration de cette modification est présentée ci-dessous :

$cfg['Servers'][$i]['host'] = '192.168.55.101';

Étape 4 : Configurer les autorisations de fichier phpMyAdmin

L'attribution d'autorisations au propriétaire du répertoire à l'utilisateur www est cruciale pour garantir la compatibilité et la sécurité.

Pour définir l'autorisation chown :

sudo chown -R www-data:www-data /var/www/phpmyadmin/

Pour définir l'autorisation chmod :

sudo find /var/www/phpmyadmin/ -type d -exec chmod 755 {} \;
sudo find /var/www/phpmyadmin/ -type f -exec chmod 644 {} \;

Dans la section suivante, nous discuterons de la création et de la configuration du bloc de service Nginx pour votre service phpMyAdmin.

Configuration d'un bloc serveur NGINX pour phpMyAdmin

Pour accéder à l'interface web de phpMyAdmin, créez un bloc serveur NGINX comme étape essentielle. Établissez un sous-domaine distinct pour renforcer les mesures de sécurité et repousser les attaques par force brute, ce qui est fortement recommandé. N'hésitez pas à nommer ce sous-domaine comme bon vous semble.

Étape 1 : Créer un bloc de serveur Nginx pour phpMyAdmin sur Debian

Commençons par créer et ouvrir votre bloc serveur avec l'éditeur de texte nano. Exécutez la commande suivante :

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Étape 2 : configurer le bloc du serveur Nginx

Une fois le fichier de blocage du serveur ouvert, copiez et collez le texte suivant dans le fichier. Assurez-vous de remplacer l'URL du domaine par la vôtre :

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /var/www/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/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Voici quelques points critiques à noter concernant l’exemple ci-dessus :

  • /run/php/php8.2-fpm.sock; – Ce chemin doit refléter la version de PHP-FPM utilisée. Par exemple, il peut s'agir de 8.3, 8.1, 8.0, 7.4, etc.
  • racine /var/www/phpmyadmin/; – Il s’agit du chemin défini dans ce guide. Si votre phpMyAdmin est situé ailleurs, assurez-vous de mettre à jour cette ligne en conséquence.

Si vous êtes la seule personne à accéder au serveur à partir d'une adresse IP statique, pensez à ajouter le code suivant au-dessus de la première entrée d'emplacement :

  allow <your ip address>;
  deny all; 

  location / {
    try_files $uri $uri/ /index.php;
  }

Le code ci-dessus bloque efficacement les visiteurs non autorisés de la page avec une erreur 403, accordant l'accès uniquement à votre adresse IP. Il s'agit d'une défense substantielle contre les attaques par force brute, même si elle ne convient pas à toutes les configurations.

Étape 3 : Enregistrer et quitter l'éditeur de texte

Pour enregistrer vos modifications, appuyez sur (CTRL+O) et pour quitter l'éditeur, appuyez sur (CTRL+X).

Étape 4 : Création d'un lien symbolique vers le fichier de configuration

Ensuite, créez un lien symbolique du répertoire sites-available vers le répertoire sites-enabled où réside le fichier de configuration :

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

Étape 5 : Effectuer un test de fonctionnement à sec

Un test de fonctionnement à sec est crucial avant de redémarrer le service NGINX. Cette mesure est essentielle dans les environnements réels, garantissant que toute modification de vos fichiers de configuration ne déclenchera pas d'erreurs NGINX :

sudo nginx -t

Si votre configuration est sans erreur, la sortie suivante vous accueillera :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Étape 6 : Redémarrage de votre service NGINX

Enfin, pour rendre les modifications effectives, redémarrez votre service NGINX :

sudo systemctl restart nginx

Cela conclut cette section sur la création d'un bloc serveur NGINX pour phpMyAdmin. Dans la section suivante, vous ouvrirez et vous connecterez à l'interface Web de phpMyAdmin.

Navigation dans l'interface Web de phpMyAdmin

Commencez votre interaction avec l'interface de phpMyAdmin en lançant votre navigateur Web préféré. Saisissez pma.example.com dans la barre d'adresse, en vous assurant de remplacer « exemple » par votre nom de domaine ou l'adresse IP de votre serveur. N'oubliez pas que vous pouvez également utiliser localhost dans des environnements internes.

Après cela, vous arriverez sur l'écran de connexion de phpMyAdmin, comme le montre l'image suivante :

Naviguez dans l'écran de connexion en saisissant vos informations d'identification et en sélectionnant « continuer » ou « Connexion ». Cette action vous donne accès au tableau de bord phpMyAdmin, illustré par l'image suivante.

En tant que nouvel utilisateur de phpMyAdmin, vous souhaiterez peut-être vous familiariser avec la « page de statut ». Il fournit un aperçu complet de l’état et de la santé de votre base de données.

Au-delà de la page de statistiques, phpMyAdmin intègre également un « système de conseillers ». Cette fonctionnalité pratique propose des suggestions d’amélioration des performances.

Il est toutefois prudent de rappeler que même si le conseiller recommande d'attendre 24 heures, la plupart considèrent qu'un minimum de 72 heures est plus optimal. Cela garantit que l'échantillonnage de la base de données s'effectue sur une période prolongée, fournissant ainsi des recommandations plus précises.

De plus, le système de conseillers ne doit pas être votre seule base de changement. La modification de vos fichiers de configuration MySQL ou MariaDB nécessite une réflexion approfondie, des tests approfondis et éventuellement plusieurs itérations. L’objectif est d’optimiser les configurations pour obtenir les meilleurs résultats, et cela prend souvent du temps.

Sécurisez phpMyAdmin via le certificat SSL Let's Encrypt

Créer un certificat SSL via Certbot

Pour renforcer la sécurité de votre instance phpMyAdmin, exécutez Nginx sur HTTPS à l'aide d'un certificat SSL. Tirer parti de Let's Encrypt, une autorité de certification renommée proposant des certificats SSL gratuits, automatisés et ouverts, constitue la méthode la plus simple.

Tout d'abord, installez le package certbot, qui facilite la gestion des certificats SSL Let's Encrypt, en exécutant :

sudo apt install python3-certbot-nginx -y

Après avoir terminé l'installation du package certbot, créez votre certificat SSL en exécutant :

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d pma.example.com

Lors du lancement du processus d'installation du certificat :

  • Une invite vous demandera de recevoir des e-mails de l'EFF (Electronic Frontier Foundation).
  • Que vous soyez d'accord (O) ou pas d'accord (N), le système installera et configurera automatiquement votre certificat TLS.
  • La configuration comprend l'application des redirections HTTPS 301, l'ajout d'un en-tête Strict-Transport-Security et la mise en œuvre du agrafage OCSP.
  • N'oubliez pas de remplacer l'e-mail et le nom de domaine dans la commande par vos coordonnées précises.

Une fois cette configuration terminée, votre URL migrera de HTTP://pma.example.com vers HTTPS://pma.example.com, redirigeant automatiquement tout accès à l'URL HTTP précédente vers l'URL HTTPS sécurisée.

Créer une tâche Cron pour le renouvellement SSL

Établissez une tâche cron qui renouvelle automatiquement vos certificats pour rationaliser davantage le processus. Certbot fournit un script de renouvellement automatique à cet effet. Avant de configurer ce travail, effectuez judicieusement un test de fonctionnement à sec pour confirmer que tout fonctionne correctement à l'aide de la commande suivante :

sudo certbot renew --dry-run

Pour planifier le renouvellement automatique, ouvrez le fichier crontab en exécutant :

sudo crontab -e

Vérifiez régulièrement le renouvellement du certificat, au moins une fois par jour, pour vous assurer que votre certificat reste valide. Si un renouvellement devient nécessaire, le script mettra automatiquement à jour le certificat. Utilisez la syntaxe cron pour définir le renouvellement à l'heure souhaitée.

00 00 */1 * * /usr/sbin/certbot-auto renew

Conclusion

Avec phpMyAdmin installé et configuré avec succès sur votre système Debian, vous pouvez gérer efficacement vos bases de données MySQL ou MariaDB via une interface Web conviviale. Des mises à jour régulières et des configurations de sécurité garantissent que votre outil de gestion de base de données reste sécurisé et à jour. Profitez de la commodité et des fonctionnalités puissantes qu'offre phpMyAdmin pour gérer vos bases de données sur Debian.

Joshua James
Suis-moi
Les derniers articles par Joshua James (tout voir)

Laissez un commentaire