serveur_hebergement:bases_de_donnees:phpmyadmin

phpMyAdmin

phpMyAdmin est une interface web permettant de manipuler vos bases de données MySQL (création, modification, suppression, etc). C'est un outil très pratique mais ça veut également dire donner un accès à vos bases de données depuis internet avec les risques qui vont avec. Comme toute interface web, elle nécessite un serveur web pour fonctionner. Dans mon cas, j'utiliserai Apache2. Je ne traiterai pas la création et configuration du nom de domaine et partirai du principe que vous avez un nom de domaine, appelé domaine.fr ici, qui pointe vers votre serveur.

L'installation sous Debian est très simple vu que le logiciel se trouve dans les dépôts et s'installe en une commande :

sudo aptitude install phpmyadmin

Pour l'utiliser, il va falloir créer un super utilisateur. Tapez les lignes suivantes dans la console (choisissez un mot de passe robuste pour l'utilisateur) :

sudo mysql
USE mysql;
CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur'@'localhost' WITH GRANT OPTION;
FLUSH privileges;
exit;

Par défaut, phpMyAdmin est accessible à l'adresse https://domaine.fr/phpmyadmin avec domaine.fr le domaine pointant sur votre serveur ou son adresse IP. N'aimant pas que n'importe puisse tomber sur la page de connexion de phpMyAdmin , je préfère le rendre accessible uniquement via un nom de domaine spécifique.

On va commencer par désactiver la configuration Apache2 actuelle permettant l'accès à phpMyAdmin :

sudo a2disconf phpmyadmin

Créez un fichier de configuration pour le sous-domaine (mettre le sous-domaine de votre choix) :

sudo nano /etc/apache2/sites-available/sous.domaine.fr.conf

Copiez-y les lignes suivantes :

<VirtualHost *:80>
 
        ServerName sous.domaine.fr
 
        Redirect / https://sous.domaine.fr/
 
</VirtualHost>
 
 
<VirtualHost *:443>
        DocumentRoot /usr/share/phpmyadmin
 
        ServerName sous.domaine.fr
 
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/phpmyadmin.access.log combined
        ErrorLog ${APACHE_LOG_DIR}/phpmyadmin.error.log
 
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/domaine.fr/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr/privkey.pem
 
        <Directory /usr/share/phpmyadmin>
                Options SymLinksIfOwnerMatch
                DirectoryIndex index.php
 
                # limit libapache2-mod-php to files and directories necessary by pma
                <IfModule mod_php7.c>
                        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
                </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/libraries>
                Require all denied
        </Directory>
 
</VirtualHost>

Vous pouvez également rajouter une double authentification en protégeant l'accès avec un identifiant/mot de passe pour plus de sécurité. Voir ici comment faire.

Ensuite, on active le fichier de configuration :

sudo a2ensite sous.domaine.fr.conf

Et on recharge Apache2 :

sudo systemctl reload apache2

On va sécuriser un peu plus phpMyAdmin. Ouvrez le fichier de configuration de phpMyAdmin :

sudo nano /etc/phpmyadmin/config.inc.php

Ajoutez les lignes suivantes :

$cfg['LoginCookieValidity'] = 1440;
$cfg['LoginCookieRecall'] = false;
$cfg['AllowUserDropDatabase'] = false;
$cfg['ShowServerInfo'] = false;

Petite explication de ces lignes :

  • $cfg['LoginCookieValidity'] = 1440; : réduit la durée de validité de la session à 24 minutes. C'est la valeur par défaut dans PHP mais ça permet de s'assurer que la session expirera toujours après 24 minutes même si la valeur est modifiée dans la configuration de PHP
  • $cfg['LoginCookieRecall'] = false; : le nom de l’utilisateur précédent n'apparait pas dans le panneau de connexion après une déconnexion automatique
  • $cfg['AllowUserDropDatabase'] : interdit la suppression de bases de données depuis phpMyAdmin
  • $cfg['ShowServerInfo'] = false; : masque les informations du serveur dans l'interface

Vous pouvez maintenant manipuler vos bases de données avec phpMyAdmin.

Vous pourriez laisser un commentaire si vous étiez connecté.
  • serveur_hebergement/bases_de_donnees/phpmyadmin.txt
  • Dernière modification : 2023/08/08 14:00
  • de 127.0.0.1