Credit : Illustration backtotheweb.fr
Les bases de MariaDB/MySQL pour les administrateurs
Les bases de MariaDB/MySQL pour les administrateurs
MariaDB et MySQL partagent la meme syntaxe SQL et les memes outils. En tant qu'administrateur, voici les commandes et concepts que vous devez maitriser.
Connexion et commandes de base
# Se connecter en root
mysql -u root -p
# Se connecter a une base specifique
mysql -u utilisateur -p nom_base
# Executer une requete en ligne de commande
mysql -u root -p -e "SHOW DATABASES;"
Gerer les bases de donnees
-- Creer une base de donnees
CREATE DATABASE monsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Lister les bases
SHOW DATABASES;
-- Utiliser une base
USE monsite;
-- Supprimer une base
DROP DATABASE test_ancien;
Creer et gerer les tables
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
titre VARCHAR(255) NOT NULL,
contenu TEXT,
auteur_id INT,
date_creation DATETIME DEFAULT CURRENT_TIMESTAMP,
publie BOOLEAN DEFAULT FALSE,
INDEX idx_auteur (auteur_id),
INDEX idx_date (date_creation)
) ENGINE=InnoDB;
-- Voir la structure
DESCRIBE articles;
SHOW CREATE TABLE articles;
-- Ajouter une colonne
ALTER TABLE articles ADD COLUMN slug VARCHAR(255) AFTER titre;
-- Ajouter un index
ALTER TABLE articles ADD INDEX idx_slug (slug);
Requetes SELECT essentielles
-- Requete avec jointure
SELECT a.titre, u.nom
FROM articles a
JOIN utilisateurs u ON a.auteur_id = u.id
WHERE a.publie = TRUE
ORDER BY a.date_creation DESC
LIMIT 20;
-- Compter par categorie
SELECT categorie, COUNT(*) as total
FROM articles
GROUP BY categorie
HAVING total > 5
ORDER BY total DESC;
-- Recherche LIKE
SELECT * FROM articles WHERE titre LIKE '%linux%';
Gestion des utilisateurs
-- Creer un utilisateur
CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'MotDePasse_Securise2026!';
-- Accorder des privileges
GRANT SELECT, INSERT, UPDATE, DELETE ON monsite.* TO 'webapp'@'localhost';
FLUSH PRIVILEGES;
-- Voir les privileges
SHOW GRANTS FOR 'webapp'@'localhost';
-- Changer un mot de passe
ALTER USER 'webapp'@'localhost' IDENTIFIED BY 'NouveauMotDePasse!';
-- Revoquer des privileges
REVOKE DELETE ON monsite.* FROM 'webapp'@'localhost';
-- Supprimer un utilisateur
DROP USER 'webapp'@'localhost';
Regle d'or : ne jamais utiliser root pour les applications. Creez un utilisateur dedie avec le minimum de privileges.
Sauvegardes
# Sauvegarder une base
mysqldump -u root -p monsite > monsite_$(date +%Y%m%d).sql
# Sauvegarder toutes les bases
mysqldump -u root -p --all-databases > all_dbs_$(date +%Y%m%d).sql
# Sauvegarder avec compression
mysqldump -u root -p monsite | gzip > monsite_$(date +%Y%m%d).sql.gz
# Restaurer
mysql -u root -p monsite < monsite_20260404.sql
# Restaurer depuis un gz
gunzip < monsite_20260404.sql.gz | mysql -u root -p monsite
Optimisation et tuning
Verifiez les performances avec :
-- Requetes lentes
SHOW VARIABLES LIKE 'slow_query_log%';
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
-- Statut du serveur
SHOW GLOBAL STATUS LIKE 'Threads%';
SHOW GLOBAL STATUS LIKE 'Connections';
SHOW PROCESSLIST;
Parametres cles dans /etc/mysql/mariadb.conf.d/50-server.cnf :
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
max_connections = 150
query_cache_type = 0
tmp_table_size = 64M
max_heap_table_size = 64M
La regle pour innodb_buffer_pool_size : allouez 50 a 70% de la RAM disponible si le serveur est dedie a MySQL.
Ces bases vous permettront de gerer efficacement vos bases de donnees en production.