GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer et sécuriser phpMyAdmin sur Debian 11

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.


Debian
  1. Comment installer et sécuriser phpMyAdmin sur Debian 9

  2. Comment installer et sécuriser phpMyAdmin sur Ubuntu

  3. Comment installer et sécuriser MongoDB sur Debian 11

  4. Comment installer et sécuriser MariaDB sur Debian 11

  5. Comment installer phpMyAdmin sur Debian 9

Comment installer phpMyAdmin sur Debian 9

Comment installer phpMyAdmin sur Debian 10 Buster

Comment installer phpMyAdmin sur Debian 11

Comment installer et sécuriser phpMyAdmin dans Ubuntu 14.04

Comment installer et sécuriser phpMyAdmin sur CentOS 8

Comment installer phpMyAdmin sur Debian 10