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 :
Vous pouvez maintenant manipuler vos bases de données avec phpMyAdmin.