Aller au contenu

MariaDB

De Wiki Pat-Informatik
🏠 Accueil 📚 Index 🐧 Linux 🌐 Réseau 🔒 Cybersécurité 🖥️ Virtualisation ✅ Checklists d'intervention 📚 Tutoriels 🤝 Services
Wiki Pat-Informatik • Bases de données

🗄️ MariaDB

Installer, administrer, sécuriser et sauvegarder une base de données relationnelle sous Linux.
MariaDB
MariaDB

🧭 Présentation de MariaDB

MariaDB est un système de gestion de bases de données relationnelles (SGBDR) libre et open source. Issu d'un dérivé de MySQL, il est très utilisé sur les serveurs Linux et dans les environnements d'hébergement web.

Il permet de stocker, organiser et retrouver les données utilisées par des applications comme GLPI, WordPress ou Nextcloud.

🌐 Open source

Logiciel libre, largement utilisé sur les serveurs.

⚡ Performant

Adapté aux applications web et à de nombreuses charges de travail.

🔗 Compatible MySQL

Utilise largement les outils et commandes de l'écosystème MySQL, avec certaines différences selon les versions.

🏗️ Comment fonctionne MariaDB ?

MariaDB organise les informations dans une structure hiérarchique :

Serveur MariaDB
    |
    +-- Base de données : glpi
    |       |
    |       +-- Table : utilisateurs
    |       +-- Table : matériels
    |       +-- Table : tickets
    |
    +-- Base de données : wordpress
            |
            +-- Table : articles
            +-- Table : commentaires
  • Serveur : le service MariaDB qui traite les connexions et les requêtes.
  • Base de données : un ensemble organisé de tables.
  • Table : des données organisées en lignes et en colonnes.
  • Enregistrement : une ligne de données dans une table.
  • SQL : le langage utilisé pour interroger et modifier les données.

🧩 Applications utilisant MariaDB

🖥️ GLPI

Gestion de parc informatique, inventaire et tickets d'assistance.

Stockage des articles, pages, utilisateurs et paramètres du site.

☁️ Nextcloud

Stockage des informations nécessaires au fonctionnement de la plateforme.

📦 Docker

Possibilité d'exécuter MariaDB dans un conteneur pour des applications auto-hébergées.

🐧 Installation sous Debian / Ubuntu

Les commandes suivantes s'appliquent à un serveur Debian ou Ubuntu utilisant les dépôts de paquets de la distribution.

1. Mettre le système à jour

sudo apt update
sudo apt upgrade -y

2. Installer MariaDB

sudo apt install mariadb-server -y

3. Vérifier le service

sudo systemctl status mariadb

Si nécessaire, démarrer le service et activer son démarrage automatique :

sudo systemctl enable --now mariadb

Pour vérifier la version installée :

mariadb --version

💡 Conseil : sur ton serveur, vérifie d'abord si MariaDB est déjà installé avant de lancer une nouvelle installation. Plusieurs applications peuvent utiliser le même serveur de base de données, à condition d'être correctement configurées et isolées par leurs comptes et leurs droits.

🔐 Sécurisation

Après l'installation, lance l'assistant de sécurisation :

sudo mariadb-secure-installation

Selon la version installée, la commande suivante peut également être disponible :

sudo mysql_secure_installation

Cet assistant permet notamment de vérifier plusieurs paramètres de sécurité, par exemple :

  • Supprimer les comptes anonymes.
  • Limiter les connexions administrateur à distance.
  • Supprimer la base de test lorsqu'elle est présente.
  • Examiner la configuration d'authentification de l'administrateur.

Les questions exactes peuvent varier selon la version de MariaDB.

Connexion à l'administration

Sur de nombreuses installations Debian/Ubuntu, l'accès administrateur local fonctionne avec :

sudo mariadb

Cette méthode utilise généralement les privilèges système plutôt qu'un mot de passe MariaDB pour le compte `root`.

Pour quitter l'invite SQL :

EXIT;

🧰 Commandes SQL essentielles

Les commandes suivantes s'exécutent dans l'invite MariaDB, après connexion avec `sudo mariadb` ou avec un compte autorisé.

📋 Afficher les bases

SHOW DATABASES;

Affiche les bases accessibles au compte connecté.

➕ Créer une base

CREATE DATABASE test;

Crée une base appelée `test`.

📂 Sélectionner une base

USE test;

Sélectionne la base pour les commandes suivantes.

🗂️ Lister les tables

SHOW TABLES;

Affiche les tables de la base sélectionnée.

Créer une table et manipuler les données

Créer une table d'exemple :

CREATE TABLE utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    email VARCHAR(190)
);

Ajouter un enregistrement :

INSERT INTO utilisateurs (nom, email)
VALUES ('Pat', 'pat@example.fr');

Afficher les enregistrements :

SELECT * FROM utilisateurs;

Modifier un enregistrement :

UPDATE utilisateurs
SET nom = 'Patrick'
WHERE id = 1;

Supprimer un enregistrement :

DELETE FROM utilisateurs
WHERE id = 1;

⚠️ Attention aux commandes UPDATE et DELETE : sans clause `WHERE`, une commande peut modifier ou supprimer toutes les lignes concernées de la table. Vérifie toujours la cible avant de valider une opération.

👤 Créer un utilisateur et attribuer des droits

Il est préférable de créer un compte dédié à chaque application plutôt que d'utiliser le compte administrateur pour les connexions applicatives.

Dans cet exemple, la base `test` et le compte `appuser` sont des noms de démonstration. Remplace-les par les valeurs adaptées à ton installation.

1. Créer un compte

Dans l'invite MariaDB :

CREATE USER 'appuser'@'localhost'
IDENTIFIED BY 'Remplacer_Par_Un_Mot_De_Passe_Fort';

2. Accorder les droits nécessaires

GRANT ALL PRIVILEGES
ON test.*
TO 'appuser'@'localhost';

Cette commande donne des droits étendus sur la base `test`. Pour un environnement de production, accorde uniquement les privilèges nécessaires à l'application.

3. Contrôler les droits

SHOW GRANTS FOR 'appuser'@'localhost';

4. Tester la connexion

Quitte l'invite MariaDB puis lance cette commande dans le terminal Linux :

mariadb -u appuser -p test

Le mot de passe sera demandé. Le compte créé avec l'hôte `localhost` est prévu pour une connexion locale.

💾 Sauvegarde et restauration

La sauvegarde est indispensable avant une mise à jour importante, une migration ou une intervention sur une application.

1. Exporter une base

Dans le terminal Linux, et non dans l'invite SQL :

mariadb-dump -u root -p glpi > glpi.sql

Selon la configuration d'authentification, une sauvegarde administrative locale peut plutôt être réalisée ainsi :

sudo mariadb-dump glpi > glpi.sql

Le fichier `glpi.sql` contient une exportation SQL de la base. Protège-le, car il peut contenir des données sensibles.

2. Restaurer une base existante

mariadb -u root -p glpi < glpi.sql

La base `glpi` doit exister et le compte utilisé doit disposer des droits nécessaires.

Avec l'accès administrateur local :

sudo mariadb glpi < glpi.sql

Important : une restauration peut remplacer ou modifier les données existantes. Fais une sauvegarde préalable et teste la procédure avant toute intervention sur un service en production.

3. Vérifier les fichiers de sauvegarde

ls -lh glpi.sql

Pour des sauvegardes régulières, prévois une copie sur un autre support ou une autre machine. Une sauvegarde conservée uniquement sur le serveur d'origine ne protège pas contre toutes les pannes.

Voir aussi : Sauvegarde.

🛡️ Bonnes pratiques de sécurité

🔑 Comptes et mots de passe

  • Utiliser des mots de passe robustes.
  • Créer un compte par application.
  • Limiter les privilèges.

🌐 Accès réseau

  • Éviter l'exposition directe à Internet.
  • Limiter les connexions distantes.
  • Filtrer les accès avec le pare-feu.

🔄 Maintenance

  • Installer les mises à jour adaptées.
  • Surveiller les journaux.
  • Tester les sauvegardes.

Vérifier l'écoute réseau

Pour examiner les ports en écoute sur le serveur :

sudo ss -lntp

Le port MariaDB par défaut est généralement `3306`. Il ne faut pas supposer que le serveur est accessible depuis l'extérieur : cela dépend de sa configuration réseau, de son adresse d'écoute et du pare-feu.

Consulter l'état du service

sudo systemctl status mariadb

Consulter les journaux du service

sudo journalctl -u mariadb --no-pager -n 50

🔧 Dépannage

❌ MariaDB ne démarre pas

sudo systemctl status mariadb
sudo journalctl -u mariadb -n 50

Consulte les messages d'erreur avant de modifier la configuration.

🔒 Accès refusé

Vérifie le nom du compte, son hôte (`localhost` ou autre), son mot de passe et ses privilèges.

SHOW GRANTS;

🔌 Connexion impossible

Vérifie que le service fonctionne, que l'application utilise le bon hôte et port et que les règles réseau autorisent la connexion.

🏠 MariaDB dans un homelab

MariaDB peut être installé directement sur un serveur Linux ou exécuté dans un conteneur. Le choix dépend de l'architecture et des besoins de chaque application.

Exemple d'organisation :

Serveur Ubuntu
    |
    +-- Apache / PHP
    |       |
    |       +-- GLPI
    |       +-- WordPress
    |
    +-- MariaDB
            |
            +-- Base GLPI
            +-- Base WordPress

Chaque application doit disposer de son propre compte de base de données et des droits nécessaires. Si MariaDB est partagé, il faut également organiser les sauvegardes et les mises à jour pour éviter d'interrompre plusieurs services.

🧾 Checklist d'administration

  • [ ] Vérifier que le service MariaDB fonctionne.
  • [ ] Contrôler les comptes et les privilèges.
  • [ ] Limiter les accès réseau au strict nécessaire.
  • [ ] Installer les mises à jour adaptées.
  • [ ] Réaliser des sauvegardes régulières.
  • [ ] Tester périodiquement une restauration.
  • [ ] Protéger les fichiers de sauvegarde.
  • [ ] Contrôler les journaux en cas d'anomalie.

📚 Pages associées

🌐 Écosystème LAMP

LAMP désigne une architecture web classique constituée de :

🐧
Linux
Système d'exploitation
🌐
Apache
Serveur web
🗄️
MariaDB
Base de données
🐘
PHP
Langage côté serveur

Cette architecture est couramment utilisée pour héberger des applications web auto-hébergées.

📖 Documentation officielle

Pat Informatik
MariaDB • Linux • Bases de données • GLPI • WordPress • Nextcloud