Cours – Les bases de données : SGBD et premières requêtes SQL
BTS SIO SISR 1re année – Bloc 1 – S15 – à lire avant le TP
Ce que tu dois savoir déjà
- Prérequis : la pile LAMP (cours précédent) : Apache, PHP et la base de données qui stocke les articles de WordPress.
- Expliqués dans ce cours : SGBD, base, table, ligne, clé primaire, utilisateur et privilèges, requête SQL, sauvegarde logique.
À la fin de ce cours, tu sauras
- dire ce qu'est un SGBD et à quoi sert la base de données d'un site WordPress ;
- créer une base, un utilisateur et lui donner uniquement les privilèges nécessaires ;
- lire et écrire quelques requêtes SQL simples (
SELECT,INSERT,UPDATE,DELETE) ; - sauvegarder et restaurer une base avec un export ;
- expliquer pourquoi une application ne se connecte pas à la base avec le compte administrateur.
1. À quoi sert une base de données ?
Un site WordPress ne stocke pas ses articles dans des fichiers : le texte, les comptes, les réglages sont dans une base de données. Les fichiers sur le serveur (thème, images, extensions) ne contiennent que l'habillage.
| Où est-ce stocké ? | Quoi | Conséquence pour la sauvegarde |
|---|---|---|
| Base de données | Articles, pages, utilisateurs, réglages | Il faut exporter la base |
| Dossier du site | Thème, extensions, images envoyées | Il faut copier les fichiers |
Warning
Sauvegarder seulement les fichiers d'un site WordPress ne sert à rien si la base est perdue : on retrouve un site vide. Une sauvegarde de site contient les deux.
2. Le vocabulaire
Un SGBD (système de gestion de bases de données) est le logiciel qui stocke, protège et interroge les données : MariaDB et MySQL sont des SGBD relationnels très répandus dans la pile LAMP (le « M »). Le SGBD est un service (un processus qui écoute sur un port, le 3306 par défaut).
| Terme | Définition | Analogie |
|---|---|---|
| Base | Un ensemble de tables pour une application | Un classeur |
| Table | Un tableau de données de même nature | Une feuille du classeur |
| Colonne | Une information (nom, date…) avec un type | Un en-tête de colonne |
| Ligne (enregistrement) | Une entrée de la table | Une ligne du tableau |
| Clé primaire | Colonne qui identifie chaque ligne de façon unique | Un numéro de dossier |
| Utilisateur | Compte de la base, avec des privilèges | Un badge d'accès |
3. Créer une base et un utilisateur
On se connecte à la base en administrateur pour créer, puis on crée un compte dédié à l'application, avec les seuls droits nécessaires sur sa base.
CREATE DATABASE parc CHARACTER SET utf8mb4;
CREATE USER 'appli_parc'@'localhost' IDENTIFIED BY 'MotDePasseDeLab';
GRANT SELECT, INSERT, UPDATE, DELETE ON parc.* TO 'appli_parc'@'localhost';
FLUSH PRIVILEGES;
| Élément | Rôle |
|---|---|
'appli_parc'@'localhost' |
Le compte et l'origine autorisée : ici, seulement la machine elle-même |
GRANT … ON parc.* |
Droits limités à la base parc et aux opérations listées |
utf8mb4 |
Jeu de caractères qui gère les accents et les symboles |
Note
Moindre privilège. L'application n'a besoin ni de créer d'autres bases, ni d'effacer des tables, ni de voir les autres bases. Si le site est piraté, l'attaquant hérite des droits du compte de l'application : mieux vaut qu'ils soient minimaux.
4. SQL : les quatre actions de base
CREATE TABLE postes (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(40) NOT NULL,
service VARCHAR(40),
systeme VARCHAR(40),
date_achat DATE
);
INSERT INTO postes (nom, service, systeme, date_achat)
VALUES ('PC-RH-042', 'RH', 'Windows 11', '2024-02-12');
SELECT nom, service FROM postes WHERE systeme = 'Windows 11' ORDER BY nom;
UPDATE postes SET service = 'Comptabilité' WHERE nom = 'PC-RH-042';
DELETE FROM postes WHERE nom = 'PC-RH-042';
| Mot | Action |
|---|---|
INSERT |
Ajoute une ligne |
SELECT … WHERE |
Lit les lignes qui répondent à une condition |
UPDATE … WHERE |
Modifie des lignes |
DELETE … WHERE |
Supprime des lignes |
Warning
Sans WHERE, UPDATE et DELETE s'appliquent à toutes les lignes. Avant une suppression, écris d'abord la requête SELECT avec la même condition et vérifie ce qu'elle renvoie.
Je vérifie. Que fait UPDATE postes SET service = 'RH'; (sans WHERE) ?
Voir la réponse
Elle met 'RH' dans la colonne service de toutes les lignes de la table : on a perdu l'information d'origine. D'où la règle : toujours un WHERE, et un test préalable par SELECT.
5. Sauvegarder et restaurer
Un export logique produit un fichier de requêtes SQL qui reconstruit la base :
mysqldump -u root -p parc > parc-AAAA-MM-JJ.sql # sauvegarde
mysql -u root -p parc < parc-AAAA-MM-JJ.sql # restauration
Un export se teste : on le restaure dans une autre base (ou une autre machine) et on compte les lignes. Le fichier contient les données : il se protège comme elles (droits restreints, copie hors du serveur).
6. Où se trouve la base de WordPress ?
Le fichier wp-config.php contient le nom de la base, le compte et son mot de passe : c'est l'un des fichiers les plus sensibles du site.
| Mesure | Pourquoi |
|---|---|
| Compte dédié à WordPress, droits limités à sa base | Limiter les dégâts en cas de piratage |
wp-config.php illisible pour les autres utilisateurs du serveur |
Ne pas exposer le mot de passe de la base |
Base non accessible depuis le réseau (localhost) |
Réduire la surface d'attaque |
| Exports réguliers et testés | Pouvoir revenir en arrière |
À retenir
- Le site WordPress = fichiers + base : on sauvegarde les deux.
- Un SGBD est un service : il a des utilisateurs et des privilèges.
- Un compte par application, avec les droits minimaux sur sa base.
- En SQL :
INSERT,SELECT,UPDATE,DELETE, et toujours unWHEREpour modifier ou supprimer. - Un export non restauré en essai n'est pas une sauvegarde.