phpMyAdmin est une application gratuite, open source et basée sur le Web utilisée pour gérer les bases de données MySQL et MariaDB à partir de l'interface Web. Créer et gérer une base de données à partir de l'interface de ligne de commande est très difficile pour les utilisateurs débutants. phpMyAdmin offre un moyen plus simple de gérer les bases de données MySQL, les comptes d'utilisateurs et les privilèges, d'exécuter des instructions SQL, d'importer et d'exporter des données via le navigateur Web.
Dans cet article, nous vous montrerons comment installer et sécuriser l'outil d'administration de base de données phpMyAdmin sur Debian 11.
Prérequis
- Un serveur exécutant Debian 11.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Avant de commencer, il est conseillé de mettre à jour vos packages système vers la dernière version. Vous pouvez mettre à jour tous les packages à l'aide de la commande suivante :
apt-get update -y
Une fois votre système mis à jour, vous pouvez passer à l'étape suivante.
Installer le serveur LAMP
phpMyAdmin est une application basée sur PHP et s'exécute sur un serveur Web. Vous devrez donc installer le serveur LAMP sur votre serveur. Vous pouvez l'installer à l'aide de la commande suivante :
apt-get install apache2 mariadb-server libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y
Une fois tous les packages installés, vous pouvez passer à l'étape suivante.
Installer et configurer phpMyAdmin
Tout d'abord, téléchargez la dernière version de phpMyAdmin depuis leur site officiel à l'aide de la commande suivante :
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
Une fois le téléchargement terminé, décompressez le fichier téléchargé avec la commande suivante :
unzip phpMyAdmin-5.1.1-all-languages.zip
Ensuite, déplacez le répertoire extrait vers /usr/share avec la commande suivante :
mv phpMyAdmin-5.1.1-all-languages /usr/share/phpmyadmin
Ensuite, créez le répertoire requis avec la commande suivante :
mkdir -p /var/lib/phpmyadmin/tmp
Ensuite, définissez la propriété appropriée sur le répertoire phpMyAdmin :
chown -R www-data:www-data /var/lib/phpmyadmin
Ensuite, copiez l'exemple de fichier de configuration phpMyAdmin :
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Ensuite, installez le pwgen et générez une clé secrète avec la commande suivante :
apt-get install pwgen -y
pwgen -s 32 1
Sortie :
pau9t1SG6lmaeCFxKqeeaY5N4erIa25K
Ensuite, éditez le fichier config.inc.php et configurez-le :
nano /usr/share/phpmyadmin/config.inc.php
Définissez votre clé secrète et décommentez les lignes suivantes :
$cfg['blowfish_secret'] = 'pau9t1SG6lmaeCFxKqeeaY5N4erIa25K'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'password'; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Enregistrez et fermez le fichier lorsque vous avez terminé.
Créer un utilisateur admin phpMyAdmin
Il est toujours recommandé de créer un utilisateur distinct pour gérer la base de données via phpMyAdmin.
Tout d'abord, importez les tables phpMyAdmin dans la base de données MariaDB à l'aide de la commande suivante :
mysql < /usr/share/phpmyadmin/sql/create_tables.sql
Ensuite, connectez-vous au shell MariaDB avec la commande suivante :
mysql
Une fois connecté, accordez tous les privilèges nécessaires à la base de données phpmyadmin avec la commande suivante :
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
Ensuite, créez un utilisateur admin avec la commande suivante :
MariaDB [(none)]> CREATE USER myadmin;
Ensuite, accordez tous les privilèges à l'utilisateur admin avec la commande suivante :
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Ensuite, videz les privilèges et quittez le shell MariaDB à l'aide de la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Apache pour phpMyAdmin
Ensuite, vous devrez créer un fichier de configuration d'hôte virtuel Apache pour phpMyAdmin. Vous pouvez le créer à l'aide de la commande suivante :
nano /etc/apache2/conf-available/phpmyadmin.conf
Ajoutez les lignes suivantes :
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> # 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/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </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 lorsque vous avez terminé puis activez le fichier de configuration de phpMyAdmin avec la commande suivante :
a2enconf phpmyadmin.conf
Ensuite, rechargez le service Apache pour appliquer les modifications :
systemctl reload apache2
Vous pouvez vérifier l'état du service Apache à l'aide de la commande suivante :
systemctl status apache2
Vous devriez voir le résultat suivant :
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-08-17 10:16:28 UTC; 2s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 45027 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 45031 (apache2) Tasks: 6 (limit: 2341) Memory: 14.6M CPU: 89ms CGroup: /system.slice/apache2.service ??45031 /usr/sbin/apache2 -k start ??45032 /usr/sbin/apache2 -k start ??45033 /usr/sbin/apache2 -k start ??45034 /usr/sbin/apache2 -k start ??45035 /usr/sbin/apache2 -k start ??45036 /usr/sbin/apache2 -k start Aug 17 10:16:28 debian systemd[1]: Starting The Apache HTTP Server...
Accéder à phpMyAdmin
À ce stade, phpMyAdmin est installé et configuré. Maintenant, ouvrez votre navigateur Web et accédez à phpMyAdmin en utilisant l'URL http://your-server-ip/phpmyadmin . Vous devriez voir la page de connexion phpMyAdmin :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur Aller bouton. Vous devriez voir le tableau de bord phpMyAdmin sur la page suivante :
Sécuriser phpMyAdmin
C'est une bonne idée de sécuriser le phpMyAdmin avec une authentification à deux facteurs. Vous pouvez le faire en utilisant les fonctionnalités d'authentification et d'autorisation .htaccess.
Tout d'abord, éditez le fichier de configuration de phpMyAdmin :
nano /etc/apache2/conf-available/phpmyadmin.conf
Ajoutez la ligne "AllowOverride All" dans le bloc serveur suivant :
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All <IfModule mod_php5.c>
Enregistrez et fermez le fichier lorsque vous avez terminé puis redémarrez le service Apache :
systemctl restart apache2
Créez ensuite un fichier .htaccess et définissez le type d'authentification Apache :
nano /usr/share/phpmyadmin/.htaccess
Ajoutez les lignes suivantes :
AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/share/phpmyadmin/.htpasswd Require valid-user
Enregistrez et fermez le fichier puis créez un utilisateur avec la commande suivante :
htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser
Il vous sera demandé de définir un mot de passe comme indiqué ci-dessous :
New password: Re-type new password: Adding password for user secureuser
Vérifier phpMyAdmin
À ce stade, phpMyAdmin est sécurisé avec une authentification supplémentaire. Pour le vérifier, ouvrez votre navigateur Web et accédez à phpMyAdmin en utilisant l'URL http://your-server-ip/phpmyadmin . Le nom d'utilisateur et le mot de passe supplémentaires vous seront demandés, comme indiqué ci-dessous :
Après avoir fourni votre nom d'utilisateur et votre mot de passe, vous serez redirigé vers la page de connexion habituelle de phpMyAdmin.
Conclusion
Toutes nos félicitations! vous avez installé et sécurisé avec succès phpMyAdmin sur Debian 11. Vous pouvez maintenant explorer phpMyAdmin et commencer à gérer votre base de données à partir du navigateur Web.