Aller au contenu principal

Installer et utiliser MariaDB

MariaDB est un système de gestion de base de données open source, créé par les fondateurs de MySQL.

MariaDB et MySQL sont très utilisés pour stocker des données pour les sites Web et les applications.

Dans cette séance, nous allons apprendre à installer et à utiliser MariaDB sur Linux.

Notions théoriques

Installation sous Windows

Pour installer le serveur MariaDB sous Windows, il suffit de télécharger le programme d'installation sur le site https://mariadb.org/download/ et de lancer l'installation :

Installation sous Linux

  1. Installation de MariaDB :

Pour installer le serveur MariaDB sous Linux, nous utilisons les commandes :

  • sudo apt update.
  • sudo apt install mariadb-server.
  1. Démarrage du service MariaDB : Après l'installation, nous devons démarrer le service MariaDB en utilisant la commande sudo service mariadb start.

    astuce

    Ces 2 commandes sont équivalentes :

    sudo service mariadb start 
    sudo systemctl start mariadb
  2. Connexion à MariaDB : Nous pouvons nous connecter à MariaDB en utilisant la commande sudo mysql.

astuce

Il existe 2 méthodes pour se connecter à MariaDB (ou MySQL).

  • avec un compte utilisateur enregistré dans MariaDB (ou MySQL) :

    mysql -u nom_utilisateur -p

    Cette commande demande de saisir le mot de passe de l'utilisateur enregistré dans le serveur de base de données.

  • avec le compte super-utilisateur du système (root) :

    sudo mysql

    Cette commande demande de resaisir le mot de passe de l'utilisateur connecté au système Linux.

  1. Création d'une base de données : Pour créer une base de données, nous utilisons la commande CREATE DATABASE nom_de_la_base;.

  2. Sélection d'une base de données : Pour utiliser une base de données, nous utilisons la commande USE nom_de_la_base;.

  3. Création d'une table : Pour créer une table dans une base de données, nous utilisons la commande :

    CREATE TABLE nom_de_la_table (nom_colonne1 type, nom_colonne2 type, ...);

    Par exemple, CREATE TABLE utilisateurs (nom VARCHAR(100), email VARCHAR(100)); crée une table appelée utilisateurs avec deux colonnes : nom et email.

  4. Insertion de données : Pour insérer des données dans une table, nous utilisons la commande :

    INSERT INTO nom_de_la_table (nom_colonne1, nom_colonne2, ...) VALUES (valeur1, valeur2, ...);

    Par exemple, INSERT INTO utilisateurs (nom, email) VALUES ('Léa Dupont', 'lea.dupont@example.com'); insère une ligne dans la table utilisateurs.

  5. Affichage des données : Pour afficher les données d'une table, nous utilisons la commande :

    SELECT * FROM nom_de_la_table;

    Par exemple, SELECT * FROM utilisateurs; affiche toutes les lignes de la table utilisateurs.

Connexions possibles client/serveur

Exemple pratique

Supposons que nous voulions créer une base de données pour stocker les informations de nos utilisateurs.

Nous allons installer MariaDB, créer une base de données appelée utilisateurs et une table infos pour stocker les noms et les emails de nos utilisateurs. Ensuite, nous insérerons quelques données et les afficherons.

# Installation de MariaDB
sudo apt install mariadb-server

# Démarrage du service MariaDB
sudo service mariadb start

# Connexion à MariaDB
sudo mysql
# ou
mysql -u root -p

# Création de la base de données 'utilisateurs'
CREATE DATABASE utilisateurs;

# Sélection de la base de données 'utilisateurs'
USE utilisateurs;

# Création de la table 'infos' avec les champs 'nom' et 'email'
CREATE TABLE infos (
nom VARCHAR(100),
email VARCHAR(100)
);

# Insertion de quelques données dans la table 'infos'
INSERT INTO infos (nom, email) VALUES ('Léa Dupont', 'lea.dupont@example.com');
INSERT INTO infos (nom, email) VALUES ('Marie Dupont', 'marie.dupont@example.com');

# Affichage des données de la table 'infos'
SELECT * FROM infos;

Après avoir exécuté la dernière commande, vous devriez voir quelque chose comme ceci :

+-------------+-------------------------+
| nom | email |
+-------------+-------------------------+
| Léa Dupont | lea.dupont@example.com |
| Marie Dupont| marie.dupont@example.com|
+-------------+-------------------------+

Cela signifie que nos données ont été correctement insérées et que nous pouvons les récupérer à partir de notre base de données.

Test de mémorisation/compréhension


Quelle commande utilisez-vous pour installer MariaDB sur votre système Linux?


Quelle commande permet de connecter nom_utilisateur à MariaDB ?


Quelle commande permet de connecter root à MariaDB ?


Quelle commande permet de créer une base de données ?


Quelle commande permet de sélectionner une base de données ?


Comment créez-vous une table dans MariaDB ?


Comment insérez-vous des données dans une table dans MariaDB ?


Comment affichez-vous toutes les données d'une table dans MariaDB ?



TP pour réfléchir et résoudre des problèmes

Objectif du TP

À la fin de ce TP, vous devriez être capable de créer une base de données MariaDB, créer une table, insérer des données dans cette table et afficher ces données.

Étapes du TP

  1. Connectez-vous à MariaDB en tant qu'utilisateur root.

  2. Créez une nouvelle base de données nommée ecole.

  3. Utilisez la base de données ecole.

  4. Créez une nouvelle table nommée etudiants avec les colonnes suivantes : id (entier, clé primaire, auto-incrément), nom (chaîne de caractères de 100 caractères maximum), prenom (chaîne de caractères de 100 caractères maximum), et email (chaîne de caractères de 100 caractères maximum).

    Voici le script SQL pour créer la table :

    CREATE TABLE etudiants (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100),
    prenom VARCHAR(100),
    email VARCHAR(100)
    );
  5. Insérez les données suivantes dans la table etudiants :

  6. Affichez toutes les données de la table etudiants.

Une solution

Réflexion sur la sécurité

Il est essentiel de garder constamment à l'esprit les pratiques de sécurité lors de l'utilisation de MariaDB.

Voici quelques points à mettre en œuvre pour sécuriser votre installation :

  1. Créer un utilisateur dédié :

    • Au lieu d'utiliser le compte root pour accéder à votre base de données, créez un utilisateur dédié avec des privilèges limités. Cela réduit les risques d'erreurs accidentelles ou d'attaques potentielles.
    • Pour créer un utilisateur, utilisez la commande suivante :
      CREATE USER 'utilisateur-ecole'@'localhost' IDENTIFIED BY 'votre_mot_de_passe';
  2. Accorder des privilèges spécifiques :

    • Accordez uniquement les privilèges nécessaires à cet utilisateur pour la base de données en question. Par exemple, pour permettre à l'utilisateur d'accéder à la base de données ecole, utilisez :
      GRANT ALL PRIVILEGES ON ecole.* TO 'utilisateur-ecole'@'localhost';
    • Limitez les privilèges en fonction des besoins. Par exemple, si l'utilisateur n'a besoin que de lire des données, vous pouvez utiliser :
      GRANT SELECT ON ecole.* TO 'utilisateur-ecole'@'localhost';
  3. Sécuriser l'accès à la base de données :

    • Assurez-vous que votre serveur MariaDB est configuré pour n'accepter que les connexions locales, sauf si cela est absolument nécessaire. Cela peut être vérifié/modifié dans le fichier de configuration de MariaDB (/etc/mysql/mariadb.conf.d/50-server.cnf).

      Comment contrôler l'accès à votre serveur de base de données ?

      Le paramètre bind-address dans le fichier de configuration de MariaDB détermine l'adresse IP sur laquelle le serveur MariaDB écoute les connexions entrantes.

      Il est essentiel pour contrôler l'accès à votre serveur de base de données et pour des raisons de sécurité.


      Fonctionnement

      • Valeur par défaut : Par défaut, bind-address est souvent défini sur 127.0.0.1, ce qui signifie que MariaDB n'acceptera que les connexions provenant de la machine locale (localhost). Cela est recommandé pour les environnements de développement ou lorsque vous ne souhaitez pas exposer votre base de données à d'autres machines.

      • Écoute sur toutes les interfaces : Si vous souhaitez que MariaDB écoute sur toutes les interfaces réseau de votre serveur (c'est-à-dire sur toutes les adresses IP), vous pouvez définir bind-address sur 0.0.0.0. Cela permettra aux connexions provenant de n'importe quelle adresse IP de se connecter à votre serveur MariaDB. Cependant, cette configuration peut présenter des risques de sécurité si elle n'est pas accompagnée de mesures de sécurité appropriées, comme un pare-feu ou des contrôles d'accès.

      • Configuration spécifique : Vous pouvez également spécifier une adresse IP particulière (par exemple, 192.168.1.100) si vous souhaitez restreindre les connexions à une interface réseau spécifique.


      Modification

      Pour modifier le paramètre bind-address, suivez ces étapes :

      1. Ouvrez le fichier de configuration avec un éditeur de texte :
      sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
      1. Recherchez la ligne contenant bind-address et modifiez-la selon vos besoins. Par exemple :
      bind-address = 0.0.0.0
      1. Enregistrez vos modifications et fermez l'éditeur.

      2. Redémarrez le service MariaDB pour appliquer les changements :

      sudo service mariadb restart

      Conclusion

      Le paramètre bind-address est un élément clé pour gérer l'accessibilité de votre serveur MariaDB.

      En le configurant correctement, vous pouvez renforcer la sécurité de votre base de données tout en permettant les connexions nécessaires.

      astuce

      Assurez-vous de toujours évaluer les implications de sécurité lorsque vous modifiez le paramètre bind-address.

    • Utilisez des pare-feu pour restreindre l'accès à votre serveur MariaDB uniquement aux adresses IP de confiance.

  4. Mettre à jour régulièrement :

    • Gardez votre installation MariaDB à jour avec les dernières versions et correctifs de sécurité pour éviter les vulnérabilités connues.
  5. Sauvegardes régulières :

    • Effectuez des sauvegardes régulières de vos bases de données pour éviter la perte de données en cas d'incident.
  6. Audit des connexions et des activités :

    • Mettez en place des mesures pour surveiller et auditer les connexions à votre base de données, afin de détecter toute activité suspecte.