Ce tutoriel vous montrera comment installer phpMyAdmin avec Apache, MariaDB, PHP7.3 (pile LAMP) sur Debian 10 Buster. 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. Nous allons également apprendre comment activer l'authentification à deux facteurs sur phpMyAdmin.
phpMyAdmin permet aux administrateurs de :
- naviguer dans les bases de données et les tables ;
- créer, copier, renommer, modifier et supprimer des bases de données ;
- créer, copier, renommer, modifier et supprimer des tables ;
- effectuer la maintenance des tables ;
- ajouter, modifier et supprimer des champs ;
- exécuter n'importe quelle instruction SQL, même plusieurs requêtes ;
- créer, modifier et supprimer des index ;
- charger des fichiers texte dans des tableaux ;
- créer et lire des vidages de tables ou de bases de données ;
- exporter des données aux formats SQL, CSV, XML, Word, Excel, PDF et LaTeX ;
- administrer plusieurs serveurs ;
- gérer les utilisateurs et les privilèges MySQL ;
- vérifier les paramètres du serveur et les informations d'exécution avec des conseils de configuration ;
- vérifier l'intégrité référentielle dans les tables MyISAM ;
- créer automatiquement des requêtes complexes à l'aide de Query-by-example (QBE)
- connecter les tables requises ;
- créer des graphiques PDF de la mise en page de la base de données ;
- rechercher globalement dans une base de données ou un sous-ensemble de celle-ci ;
- transformer les données stockées dans n'importe quel format à l'aide d'un ensemble de fonctions prédéfinies, telles que l'affichage des données BLOB sous forme d'image ou de lien de téléchargement ;
- gérer les tables InnoDB et les clés étrangères ;
Prérequis
Pour suivre ce tutoriel, vous avez besoin d'un système d'exploitation Debian 10 exécuté sur votre ordinateur local ou sur un serveur distant.
Si vous recherchez un VPS (Virtual Private Server), vous pouvez créer un compte chez Vultr via mon lien de parrainage pour obtenir un crédit gratuit de 50 $ (pour les nouveaux utilisateurs uniquement). Et si vous avez besoin de configurer phpMyAdmin avec un nom de domaine, je vous recommande d'acheter des noms de domaine auprès de NameCheap car le prix est bas et ils offrent une protection gratuite de la confidentialité whois.
Il est supposé que vous avez déjà installé la pile LAMP sur Debian 10. Si ce n'est pas le cas, veuillez consulter le didacticiel suivant.
- Comment installer la pile LAMP (Apache, MariaDB, PHP7.3) sur Debian 10 Buster
Veuillez noter que vous devez avoir le privilège root lors de l'installation de logiciels sur Debian. Vous pouvez ajouter sudo au début d'une commande, ou utilisez su -
commande pour passer à l'utilisateur root.
Cela dit, commençons par installer phpMyAdmin.
Étape 1 :Téléchargez phpMyAdmin sur le serveur Debian 10
phpMyAdmin n'est pas inclus dans le référentiel de logiciels Debian 10, nous devons donc télécharger manuellement le logiciel. Allez sur la page de téléchargement de phpMyAdmin pour vérifier la dernière version stable. Exécutez ensuite la commande suivante pour le télécharger.
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
Astuce :Vous pouvez toujours utiliser le format d'URL ci-dessus pour télécharger la dernière version stable de phpMyAdmin. Remplacez simplement 4.9.0.1 par le dernier numéro de version.
Ensuite, extrayez-le.
sudo apt install unzip unzip phpMyAdmin-4.9.0.1-all-languages.zip
Déplacez phpMyadmin 4.9 vers /usr/share/
répertoire.
sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin
Ensuite, faites en sorte que l'utilisateur du serveur Web (www-data
) en tant que propriétaire de ce répertoire.
sudo chown -R www-data:www-data /usr/share/phpmyadmin
Étape 2 :Créer une base de données MariaDB et un utilisateur pour phpMyAdmin
Nous devons maintenant nous connecter à la console MariaDB et créer une base de données et un utilisateur pour phpMyAdmin. Par défaut, le package MaraiDB sur Debian utilise unix_socket pour authentifier la connexion de l'utilisateur, ce qui signifie essentiellement que vous pouvez utiliser le nom d'utilisateur et le mot de passe du système d'exploitation pour vous connecter à la console MariaDB. Vous pouvez donc exécuter la commande suivante pour vous connecter sans fournir de mot de passe root MariaDB.
sudo mysql -u root
Ensuite, créez une nouvelle base de données pour phpMyAdmin à l'aide de la commande SQL suivante. Ce tutoriel le nomme phpmyadmin
, vous pouvez utiliser le nom de votre choix pour la base de données.
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
La commande SQL suivante créera le phpmyadmin
utilisateur de la base de données et définissez un mot de passe, et en même temps accordez toutes les autorisations de la nouvelle base de données au nouvel utilisateur afin que plus tard phpMyAdmin puisse écrire dans la base de données. Remplacez les textes rouges par votre mot de passe préféré.
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';
Videz la table des privilèges et quittez la console MariaDB.
FLUSH PRIVILEGES; EXIT;
Étape 3 :Installez les modules PHP requis et recommandés.
Exécutez la commande suivante pour installer les modules PHP requis ou recommandés par phpMyAdmin.
sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp
Puis redémarrez Apache.
sudo systemctl restart apache2
Étape 4 :Créer une configuration Apache pour phpMyAdmin
Si vous souhaitez accéder à l'interface Web de phpMyAdmin à partir d'un sous-répertoire, créez un extrait de configuration avec la commande suivante.
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Collez le texte suivant dans le fichier.
# phpMyAdmin default Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php <IfModule mod_php5.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> <IfModule mod_php.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/templates> Require all denied </Directory> <Directory /usr/share/phpmyadmin/libraries> Require all denied </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Require all denied </Directory>
Enregistrez et fermez le fichier. Activez ensuite cet extrait de configuration.
sudo a2enconf phpmyadmin.conf
Nous devons également créer le dossier temporaire de phpMyAdmin.
sudo mkdir -p /var/lib/phpmyadmin/tmp sudo chown www-data:www-data /var/lib/phpmyadmin/tmp
Rechargez Apache pour que les modifications prennent effet.
sudo systemctl reload apache2
Vous pouvez maintenant accéder à l'interface Web de phpMyAdmin à l'adresse
your-server-ip/phpmyadmin
Si phpMyAdmin est installé sur votre ordinateur Debian local, vous pouvez accéder à l'interface Web de phpMyAdmin en saisissant le texte suivant dans la barre d'adresse du navigateur.
localhost/phpmyadmin
Si la connexion est refusée ou échoue, il se peut qu'un pare-feu empêche les requêtes HTTP. Si vous utilisez le pare-feu iptables, vous devez exécuter la commande suivante pour ouvrir les ports TCP 80 et 443.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Si vous utilisez un pare-feu UFW, exécutez cette commande pour ouvrir les ports TCP 80 et 443.
sudo ufw allow http sudo ufw allow https
Étape 5 :Accéder à phpMyAdmin depuis un sous-domaine
Parfois, vous souhaiterez peut-être utiliser un sous-domaine pour accéder à l'interface Web de phpMyAdmin. De cette façon, vous pouvez activer HTTPS pour chiffrer le trafic.
Tout d'abord, nous devons créer un hôte virtuel Apache pour phpMyAdmin. L'extrait de configuration phpMyAdmin existant peut être utilisé comme modèle. Copions-le dans un nouveau fichier.
sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf
Modifiez ensuite le nouveau fichier avec un éditeur de texte en ligne de commande, tel que Nano.
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
Ajoutez les lignes suivantes au début de ce fichier. Remplacez pma.example.com par votre sous-domaine préféré pour phpMyAdmin. N'oubliez pas de créer un enregistrement DNS A pour ce sous-domaine.
<VirtualHost *:80> ServerName pma.example.com DocumentRoot /usr/share/phpmyadmin ErrorLog ${APACHE_LOG_DIR}/pma.error.log CustomLog ${APACHE_LOG_DIR}/pma.access.log combined
Ajoutez la ligne suivante à la fin de ce fichier.
</VirtualHost>
Enregistrez et fermez le fichier. (Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O
, puis appuyez sur Entrée pour confirmer. Pour quitter, appuyez sur Ctrl+X
.) Activez ensuite cet hôte virtuel.
sudo a2ensite phpmyadmin.conf
Rechargez le serveur Web Apache pour que cette modification prenne effet.
sudo systemctl reload apache2
Vous devriez maintenant pouvoir accéder à l'interface Web de phpMyAdmin via
pma.example.com
Avant de saisir les informations d'identification de l'utilisateur dans le formulaire de connexion, activons HTTPS.
Étape 6 :Activer HTTPS sur phpMyAdmin avec Apache
Pour sécuriser l'interface web de phpMyadmin, nous pouvons installer un certificat Let's Encrypt TLS gratuit. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) à partir du référentiel de logiciels Debian 10.
sudo apt install certbot python3-certbot-apache
Python3-certbot-apache
est le plugin Apache pour Certbot. Exécutez maintenant la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]
Explication :
- –apache : Utiliser l'authentificateur et le programme d'installation Apache
- –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.
Étape 7 :Exécutez le script d'installation de phpMyAdmin
Entrez ce qui suit dans la barre d'adresse de votre navigateur.
your-server-ip/phpmyadmin/setup
ou
pma.example.com/setup
Cliquez sur New Server
bouton pour configurer un serveur.
Cliquez ensuite simplement sur Apply
bouton.
Ensuite, cliquez sur le bouton Afficher pour afficher le fichier de configuration.
Dans le /usr/share/phpmyadmin/
répertoire, créez le fichier config.inc.php.
sudo nano /usr/share/phpmyadmin/config.inc.php
Copiez le contenu de config.inc.php
depuis la page de configuration de phpMyAdmin et collez-les dans /usr/share/phpmyadmin/config.inc.php
fichier.
Étape 8 :Résoudre l'erreur de connexion à phpMyAdmin
Maintenant, si vous essayez de vous connecter à phpMyAdmin 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 gérer 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 résoudre 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 mysql -u root
Créez un utilisateur administrateur avec authentification par mot de passe.
create user [email protected] identified by 'your-preferred-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 l'admin
compte et gérer toutes les bases de données.
Étape 9 :Configurer le stockage de configuration de phpMyAdmin
Maintenant, dans le panneau de configuration de phpMyAdmin, vous pouvez voir un message d'avertissement.
The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. Or alternately go to 'Operations' tab of any database to set it up there.
Cliquez sur le lien Découvrir pourquoi. Cliquez ensuite sur le lien Créer pour créer des tables dans phpmyadmin
base de données.
Étape 10 :Restreindre l'accès au répertoire /setup
Pour restreindre l'accès au répertoire /setup, nous pouvons activer l'authentification par mot de passe de base avec le serveur Web Apache. Exécutez la commande suivante pour définir un mot de passe pour l'utilisateur admin
. /etc/apache2/htpasswd
le fichier est utilisé pour stocker les noms d'utilisateur et le mot de passe.
sudo htpasswd -c /etc/apache2/htpasswd admin
Modifiez ensuite le fichier de configuration Apache pour phpMyAdmin
sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf
ou
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Ajoutez les lignes suivantes.
# Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authz_core.c> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/apache2/htpasswd </IfModule> Require valid-user </IfModule> </Directory>
Enregistrez et fermez le fichier. Rechargez ensuite Apache pour que les modifications prennent effet.
sudo systemctl reload apache2
Si vous accédez à nouveau au script de configuration de phpMyAdmin, il vous sera demandé de saisir un nom d'utilisateur et un mot de passe.
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.