Objectifs :
- installer et découvrir PHPMyAdmin ;
- créer un utilisateur et une base via l'interface web de PHPMyAdmin ;
- effectuer des modifications de privilèges ;
- effectuer un export de base de données.
En plus de l'interface CLI, il est possible d'utiliser des logiciels de gestion de base de données graphiques pour se connecter à MariaDB ou MySQL. Il en existe trois particulièrement utilisés :
- PHPMyAdmin est une application web PHP assez complète permettant d'effectuer de nombreuses opérations ;
- adminer est aussi une application web PHP, mais qui se différencie par sa légèreté et sa simplicité d'installation (un seul fichier à déposer dans un emplacement web) ;
- MySQL Workbench est le client officiel d'Oracle pour MySQL, disponible pour Windows, macOS et différentes distributions Linux.
Notre serveur MariaDB n'autorise une connexion de l'administrateur (root) que depuis localhost. Or, l'étape suivante installera PHPMyAdmin sur server11, qui n'est donc pas la machine locale. Il faut donc créer un utilisateur administrateur pouvant se connecter depuis server11.
Se connecter sur server12 en tant que root, puis lancer un shell MariaDB. Lancer les commandes suivantes :
CREATE USER 'root'@'10.13.37.11' IDENTIFIED BY 'remotepass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.13.37.11' IDENTIFIED BY 'remotepass' WITH GRANT OPTION;
Sur server11, installer le paquet phpmyadmin. Lors de l'installation, il est
proposer de reconfigurer un serveur web automatiquement, n'en sélectionner
aucun. À la question "Configure database for phpmyadmin with dbconfig-common?",
répondre "No".
Ensuite, créer un lien symbolique pour le fichier de configuration : ln -sv /etc/phpmyadmin/config.inc.php /usr/share/phpmyadmin/config.inc.php. Éditer
/etc/phpmyadmin/config-db.php, et remplacer 'localhost'; par '10.13.37.12'; pour se connecter à MariaDB sur server12.
Ajouter ensuite la configuration suivante dans le bloc server de
/etc/nginx/sites-enabled/server11.example.com.conf :
location /phpmyadmin/ {
root /usr/share/;
index index.php;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
À quoi servent toutes ces directives ? Certaines viennent préciser où chercher
les fichiers de l'application afin d'être servies depuis le chemin
/phpmyadmin/, d'autres viennent permettre l'exécution dans PHP-FPM des
fichiers PHP.
On remarquera les différences entre le bloc du TP PHP-FPM et celui ci-dessus sur les variables de configuration FastCGI pour la configuration de PHP (en particulier l'inclusion de fichiers différents).
Accéder depuis la machine hôte à http://server11.example.com/phpmyadmin/ ;
Questions :
- où est installé PHPMyAdmin ?
Il faut encore paramétrer PHPMyAdmin. Sous Debian, il est possible de faire ce
paramétrage dans le fichier /etc/phpmyadmin/config-db.php. Editer ce fichier
et paramétrer la variable $dbserver à l'adresse IP de server12.
Depuis la machine hôte, se rendre sur http://server11.example.com/phpmyadmin/,
puis utiliser le login newdb et le mot de passe password2. Examiner sur la
gauche ce qui est accessible comme données, ainsi que les onglets du haut.
Se déconnecter de PHPMyAdmin puis s'y connecter à l'aide du login root et du
mot de passe remotepass.
Question : est-ce que root a accès à plus de choses ? Quoi ?
Se rendre dans l'onglet "User accounts", retrouver l'utilisateur newdb@%
utilisé plus haut, éditer ses privilèges pour la base newdb et ne lui attribuer
que les privilèges "Data" et "Structure". Se déconnecter de la session root et
ouvrir une nouvelle session en tant qu'utilisateur newdb.
Question :
- est-ce que
newdb@%peut accéder à la base éponyme ?
Depuis la session newdb, se rendre dans l'onglet "export" et effectuer un
export de la base de données newdb, au format SQL. Un fichier sera donné à
télécharger.
Question : que contient ce fichier ? (l'ouvrir avec un éditeur de texte)
Ouvrir une session root dans PHPMyAdmin, et se rendre dans l'onglet "user
accounts". Créer un nouvel utilisateur nommé foobar, pouvant se connecter
depuis n'importe où, et ayant pour mot de passe foobaz. Avant la création, ne
pas oublier de cocher la case "Create database with same name and grant all
privileges".
Vérifier en se déconnectant puis en se connectant à PHPMyAdmin que l'utilisateur et la base sont fonctionnels.