Installer MariaDB, sécuriser l'instance, créer des bases de données, gérer les utilisateurs et effectuer des sauvegardes.
# 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
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 |
# Connexion en tant que root
sudo mariadb
-- Créer la base
CREATE DATABASE mon_application CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Vérifier
SHOW DATABASES;
-- 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';
# Quitter puis se reconnecter avec le nouvel utilisateur
EXIT;
mariadb -u appuser -p mon_application
-- 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;
-- 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';
# 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 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
# 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