Installer MariaDB sur Debian 13, créer des bases de données et des utilisateurs, maîtriser les requêtes SQL essentielles.
Debian 13 avec accès root ou sudo. Connaître les commandes Linux de base. Des notions de base de données sont un plus mais pas indispensables.
sudo apt update && sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
# Sécurisation initiale (recommandé)
sudo mysql_secure_installation
| Question mysql_secure_installation | Réponse recommandée |
|---|---|
| Switch to unix_socket authentication ? | n (déjà configuré) |
| Change the root password ? | Y — définir un mot de passe root fort |
| Remove anonymous users ? | Y — supprimer les comptes anonymes |
| Disallow root login remotely ? | Y — root uniquement en local |
| Remove test database ? | Y — supprimer la base de test |
| Reload privilege tables now ? | Y — appliquer les changements |
# Connexion en tant que root (authentification système) sudo mysql # Connexion avec mot de passe mysql -u root -p # Connexion à une base spécifique mysql -u monuser -p mabase # Quitter le client MySQL EXIT; -- ou QUIT;
-- Lister les bases de données SHOW DATABASES; -- Sélectionner une base USE mabase; -- Lister les tables SHOW TABLES; -- Voir la structure d'une table DESCRIBE matable; -- Voir la version SELECT VERSION(); -- Voir l'utilisateur courant SELECT USER();
-- Créer une base de données CREATE DATABASE mabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Créer un utilisateur CREATE USER 'monuser'@'localhost' IDENTIFIED BY 'MotDePasseFort!'; -- Donner tous les droits sur une base GRANT ALL PRIVILEGES ON mabase.* TO 'monuser'@'localhost'; -- Droits en lecture seule GRANT SELECT ON mabase.* TO 'lecteur'@'localhost'; -- Appliquer les changements de droits FLUSH PRIVILEGES; -- Voir les droits d'un utilisateur SHOW GRANTS FOR 'monuser'@'localhost'; -- Supprimer un utilisateur DROP USER 'monuser'@'localhost'; -- Supprimer une base DROP DATABASE mabase;
USE mabase;
CREATE TABLE utilisateurs (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
actif BOOLEAN DEFAULT TRUE,
cree_le DATETIME DEFAULT NOW()
);
-- Insérer des données
INSERT INTO utilisateurs (nom, email) VALUES ('Alice Dupont', 'alice@exemple.fr');
INSERT INTO utilisateurs (nom, email) VALUES ('Bob Martin', 'bob@exemple.fr');
-- Lire toutes les données
SELECT * FROM utilisateurs;
-- Lire avec filtre
SELECT nom, email FROM utilisateurs WHERE actif = TRUE;
-- Modifier des données
UPDATE utilisateurs SET actif = FALSE WHERE nom = 'Bob Martin';
-- Supprimer des données
DELETE FROM utilisateurs WHERE id = 2;
-- Compter les lignes
SELECT COUNT(*) FROM utilisateurs;
# Sauvegarder une base de données mysqldump -u root -p mabase > /backup/mabase-$(date +%Y%m%d).sql # Sauvegarder toutes les bases mysqldump -u root -p --all-databases > /backup/all-databases.sql # Restaurer une base mysql -u root -p mabase < /backup/mabase-20260601.sql # Créer la base avant restauration si elle n'existe pas mysql -u root -p -e "CREATE DATABASE mabase;" mysql -u root -p mabase < /backup/mabase-20260601.sql
# Automatiser la sauvegarde avec cron (tous les jours à 3h) # Dans crontab -e : 0 3 * * * mysqldump -u root --single-transaction --all-databases | gzip > /backup/mysql-$(date +\%Y\%m\%d).sql.gz
✅ Réponse : SHOW DATABASES;
✅ Réponse : GRANT ALL PRIVILEGES ON mabase.* TO monuser@localhost;
✅ Réponse : FLUSH PRIVILEGES;
✅ Réponse : mysqldump -u root -p mabase > fichier.sql
✅ Réponse : WHERE