Linux

MariaDB — Base de données Linux

Installer MariaDB, sécuriser l'instance, créer des bases de données, gérer les utilisateurs et effectuer des sauvegardes.

← Retour aux tutoriels Linux
📚 C'est quoi MariaDB ? MariaDB est un système de gestion de bases de données relationnelles (SGBDR) open source, fork de MySQL. Il est 100% compatible avec MySQL (mêmes commandes, mêmes clients) et est le SGBDR par défaut sur la plupart des distributions Linux. Il est utilisé par WordPress, Nextcloud, Moodle et des millions d'applications web.
ⓘ Prérequis Un serveur Debian/Ubuntu avec accès root.

Installer MariaDB

# Mettre à jour et installer
sudo apt update
sudo apt install mariadb-server mariadb-client -y

# Vérifier le statut
sudo systemctl status mariadb

# Activer au démarrage
sudo systemctl enable mariadb

# Vérifier la version
mariadb --version

Sécuriser l'installation

Le script de sécurisation configure les bonnes pratiques :

# Lancer le script de sécurisation
sudo mysql_secure_installation

Répondez aux questions :

Question Réponse recommandée
Enter current password for root Appuyez sur Entrée (vide par défaut)
Switch to unix_socket authentication Y (recommandé)
Set root password Y + mot de passe fort
Remove anonymous users Y
Disallow root login remotely Y
Remove test database Y
Reload privilege tables Y

Créer une base de données et un utilisateur

Se connecter à MariaDB

# Connexion en tant que root
sudo mariadb

Créer une base de données

-- Créer la base
CREATE DATABASE mon_application CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Vérifier
SHOW DATABASES;

Créer un utilisateur dédié

-- Créer l'utilisateur (accès local uniquement)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'Password';

-- Donner les droits sur la base
GRANT ALL PRIVILEGES ON mon_application.* TO 'appuser'@'localhost';

-- Appliquer les changements
FLUSH PRIVILEGES;

-- Vérifier les droits
SHOW GRANTS FOR 'appuser'@'localhost';

Tester la connexion

# Quitter puis se reconnecter avec le nouvel utilisateur
EXIT;
mariadb -u appuser -p mon_application

Opérations courantes

Gérer les tables

-- Créer une table
CREATE TABLE utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    date_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Insérer des données
INSERT INTO utilisateurs (nom, email) VALUES ('Jean Dupont', '[email protected]');

-- Lire les données
SELECT * FROM utilisateurs;

-- Voir la structure d'une table
DESCRIBE utilisateurs;

Gérer les utilisateurs

-- Lister tous les utilisateurs
SELECT User, Host FROM mysql.user;

-- Modifier un mot de passe
ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'NouveauMotDePasse!';

-- Révoquer des droits
REVOKE ALL PRIVILEGES ON mon_application.* FROM 'appuser'@'localhost';

-- Supprimer un utilisateur
DROP USER 'appuser'@'localhost';

Sauvegarde et restauration

Sauvegarder une base

# Sauvegarder une base complète
sudo mysqldump mon_application > /backup/mon_application_$(date +%Y%m%d).sql

# Sauvegarder toutes les bases
sudo mysqldump --all-databases > /backup/all_databases_$(date +%Y%m%d).sql

# Sauvegarde compressée
sudo mysqldump mon_application | gzip > /backup/mon_application_$(date +%Y%m%d).sql.gz

Restaurer une base

# Restaurer depuis un fichier SQL
sudo mariadb mon_application < /backup/mon_application_20240101.sql

# Restaurer depuis un fichier compressé
gunzip < /backup/mon_application_20240101.sql.gz | sudo mariadb mon_application

Automatiser avec cron

# Ajouter dans le crontab (sauvegarde quotidienne à 2h du matin)
sudo crontab -e

# Ajouter cette ligne :
# 0 2 * * * mysqldump --all-databases | gzip > /backup/mariadb_$(date +\%Y\%m\%d).sql.gz
✔ Résultat MariaDB est installé, sécurisé et opérationnel. Vous savez créer des bases, gérer les utilisateurs avec des permissions granulaires, et mettre en place des sauvegardes automatiques.