Pour ne plus avoir besoin de passer par le biais de la ligne de commande pour effectuer des actions dans la base de données il est pratique d'utiliser des outils graphiques tels que PhpMyAdmin, nous allons voir comment l'installer et le configurer.
Installation des prérequis
Dans un premier temps, il nous faut un serveur pour gérer les requêtes http/https, ici apache2 :
sudo apt install apache2
Pour que le site fonctionne au même titre que bon nombre de sites internet, il nous faut installer php et quelques unes de ses dépendances :
sudo apt install php php-mysql php-common php-cgi php-mysqli php-pear php-mbstring libapache2-mod-php php-phpseclib
Pour finir, mariadb qui va être notre système de base de données :
sudo apt install mariadb-server
Installation de PhpMyAdmin
Récupérer l'archive
Maintenant que tout est prêt, l'installation de l'outil qui nous intéresse peut commencer en récupérant la dernière version disponible sur le dépôt officiel :
wget -P Downloads https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
Décompresser et configurer l'application
Avant de décompresser l'archive, nous allons créer un répertoire dans lequel placer l'application :
sudo mkdir /usr/share/phpmyadmin
(usr/share est utilisé ici mais /var/www fonctionne aussi, il faudra adapter le code qui suit si ce choix est effectué)
Et un second répertoire pour y stocker les fichiers temporaires :
mkdir -p /var/lib/phpmyadmin/tmp
Maintenant, il est possible d'extraire le contenu de l'archive dans le dossier créé :
sudo tar xvf phpMyAdmin-latest-all-languages.tar.gz --strip-components=1 -C /usr/share/phpmyadmin
Pour configurer l'application il faut générer le fichier de configuration à partir de celui qui est fourni par défaut :
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Pour utiliser le système de cookies sur le site, il va falloir fournir une chaine de 32 charactères au fichier de configuration, au lieu de taper cette chaine à la main, on peut la générer avec la commande qui suit :
openssl rand -base64 32
Maintenant, nous pouvons ouvrir le fichier :
nano /usr/share/phpmyadmin/config.inc.php
Il nous faut trouver la ligne suivante et écrire une chaine de 32 caractères ou copier celle générée au dessus :
$cfg['blowfish_secret'] = ''
Dans ce même fichier nous allons ajouter la prise en compte du dossier destiné aux fichiers temporaires créé au dessus :
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
La configuration de base de l'application elle même est terminée, il ne reste plus qu'à faire en sorte que l'on puisse y accéder grâce à apache2 installé au début de l'article.
Prise en compte par apache
Pour que PhpMyAdmin soit pris en compte par apache et que l'on puisse y accéder, il faut créer un fichier de configuration :
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
La configuration qui suit est une proposition parmi tant d'autres, l'objectif ici est de fournir une base fonctionnelle :
# Un alias permet de remplacer l'url /phpmyadmin par /pasphpmyadmin ici pour qu'il soit moins évident pour un acteur extérieur de savoir si vous utilisez PhpMyAdmin ou pas
Alias /pasphpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
# Les 3 lignes qui suivent visent à réduire l'accès à des IPs bien précises (l'utilisateur local uniquement dans l'exemple) pour éviter l'accès à /pasphpmyadmin par des acteurs extérieurs
Order deny,allow
Deny from all
Allow from 127.0.0.1/24
<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>
# Suppression de l'accès à un certain nombre de dossiers depuis le web
<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>
Maintenant que tout est prêt, il faut faire en sorte que apache2 prenne en compte notre fichier de configuration :
sudo a2enconf phpmyadmin.conf
Et recharger le service :
sudo systemctl reload apache2
Maintenant, en allant sur http://mon-ip/pasphpmyadmin on obtient :
PhpMyAdmin est maintenant fonctionnel et il est possible d'y accéder sur notre navigateur.