Aller au contenu
M06 · C. Manipuler les données

Administrer la base de données

Sauvegarder et restaurer une base (mysqldump), importer et exporter des données, créer des comptes utilisateurs et gérer leurs privilèges avec GRANT et REVOKE.

1Situer

La base de Souk Atlas contient maintenant des mois de commandes. Que se passe-t-il si le disque du serveur tombe en panne ? Et faut-il vraiment que le site web se connecte avec le compte root, qui a le droit de tout supprimer ? Administrer une base, c'est la protéger : sauvegardes régulières, et chaque utilisateur avec juste les droits dont il a besoin.

2Comprendre

Sauvegarder, restaurer, donner des droits
MySQLbase souk7 tables mysqldump souk_06-01.sqlCREATE + INSERT Autre disqueou cloudcopies datées mysql souk < souk_06-01.sql 'site_souk'@'localhost' ✔ SELECT, INSERT✖ DELETE, DROP 'compta'@'localhost' ✔ SELECT✖ tout le reste

La base souk sur le serveur MySQL.

1 / 4

Sauvegarder et restaurer : backup

L’outil mysqldump (dans le terminal, pas dans le client mysql) écrit un fichier .sql qui contient tous les CREATE TABLE et INSERT nécessaires :

mysqldump -u root -p souk > souk_2025-06-01.sql              # toute la base
mysqldump -u root -p souk produits clients > catalogue.sql   # quelques tables
mysqldump -u root -p --all-databases > serveur_complet.sql   # tout le serveur

Pour restaurer : mysql -u root -p souk < souk_2025-06-01.sql. Dans Workbench : Server > Data Export et Server > Data Import.

Importer et exporter

BesoinMoyen
Importer un .sqlmysql -u root -p souk < fichier.sql ou SOURCE fichier.sql;
Importer un .csvLOAD DATA INFILE ... ou Workbench « Table Data Import Wizard »
Exporter un résultat en .csvSELECT ... INTO OUTFILE ... ou Workbench « Export »
Exporter toute la basemysqldump

Créer des comptes utilisateurs

CREATE USER 'site_souk'@'localhost' IDENTIFIED BY 'Mot2Passe!Fort';  -- depuis le serveur seulement
CREATE USER 'compta'@'%' IDENTIFIED BY 'Autre!Mot2Passe';            -- depuis n'importe où
ALTER USER 'compta'@'%' IDENTIFIED BY 'Nouveau!Mot2Passe';           -- changer le mot de passe
DROP USER 'compta'@'%';                                              -- supprimer le compte

Gérer les privilèges : GRANT et REVOKE

GRANT SELECT ON souk.* TO 'compta'@'localhost';                     -- lire toute la base
GRANT SELECT, INSERT ON souk.commandes TO 'site_souk'@'localhost';  -- une table
GRANT ALL PRIVILEGES ON souk.* TO 'admin_souk'@'localhost';         -- tout sur souk
REVOKE INSERT ON souk.commandes FROM 'site_souk'@'localhost';       -- retirer
SHOW GRANTS FOR 'site_souk'@'localhost';                            -- vérifier
Exemple simple

Les clés du riad

Le gardien du riad a toutes les clés. Le livreur a seulement la clé de la porte de service, la femme de ménage celles des chambres. Dans MySQL, root est le gardien ; chaque application reçoit seulement les clés (privilèges) utiles.

GRANT SELECT, INSERT ON souk.* TO 'site'@'localhost';
Exemple simple

La photocopie du registre

Une sauvegarde, c'est une photocopie du registre rangée dans un autre bâtiment. Si le registre brûle, on repart de la photocopie. Une sauvegarde gardée sur le même disque que la base ne sert à rien en cas de panne du disque.

3Manipuler

Préparez les comptes de la boutique. La console simule les comptes MySQL : SHOW GRANTS montre les droits de chaque compte.
Pas à pas dans le lab ↗ La base de départ se crée dans votre navigateur (moteur SQL d’environ 700 Ko, chargé une fois).
Résultat

Le résultat de chaque requête s'affichera ici.

Consignes 0 / 4

  1. Donnez aussi à site_souk le droit INSERT sur souk.commandes
  2. Créez le compte 'compta'@'localhost' avec un mot de passe
  3. Donnez à compta seulement le droit SELECT sur toute la base souk
  4. Retirez à site_souk le droit SELECT sur toute la base (REVOKE)

4Pratiquer

Exercice 1 · Sauvegarder et restaurer

Écrivez les commandes (dans le terminal, pas dans mysql) pour sauvegarder la base souk dans souk_2025-06-01.sql, puis la restaurer dans une base souk_test.

Voir le corrigé
mysqldump -u root -p souk > souk_2025-06-01.sql

mysql -u root -p -e "CREATE DATABASE souk_test"
mysql -u root -p souk_test < souk_2025-06-01.sql

Exercice 2 · Le compte du formateur

Créez un compte formateur qui peut tout faire sur la base exercices, mais rien sur les autres bases.

Voir le corrigé
CREATE USER 'formateur'@'localhost' IDENTIFIED BY 'Un!MotDePasse2025';
GRANT ALL PRIVILEGES ON exercices.* TO 'formateur'@'localhost';

Exercice 3 · Exporter une table en CSV

Exportez la liste des produits (nom, prix, stock) dans un fichier CSV séparé par des points-virgules.

Voir le corrigé
SELECT nom, prix, stock
INTO OUTFILE '/var/lib/mysql-files/produits.csv'
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM produits;
-- ou : Workbench, clic droit sur le résultat > Export

5Vérifier

1. Quel outil crée un fichier .sql de sauvegarde d'une base MySQL ?
2. Le principe du moindre privilège, c'est...
3. Quelle commande retire un droit ?