Aller au contenu principal

Gestion des permissions

Gestion des permissions dans MariaDB (ou MySQL).

MariaDB, comme de nombreux systèmes de gestion de base de données, utilise un système de permissions pour contrôler l'accès aux bases de données et aux tables.

Dans cette séance, nous allons apprendre à gérer les permissions dans MariaDB.

Notions théoriques

  1. Création d'un utilisateur :

    Pour créer un nouvel utilisateur, nous utilisons la commande :

    CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe';.

  2. Donner des permissions :

    Pour donner des permissions à un utilisateur, nous utilisons la commande :

    GRANT type_de_permission ON nom_de_la_base.* TO 'nom_utilisateur'@'localhost';.

    Afin de garantir que les nouvelles permissions sont bien prises en compte par le serveur, nous utilisons la commande :

    FLUSH PRIVILEGES;.

    info

    Le type_de_permission peut être :

    • ALL PRIVILEGES pour toutes les permissions,
    • ou des permissions spécifiques comme SELECT, INSERT, UPDATE, DELETE, etc.
  3. Révocation des permissions :

    Pour révoquer des permissions d'un utilisateur, nous utilisons la commande :

    REVOKE type_de_permission ON nom_de_la_base.* FROM 'nom_utilisateur'@'localhost';.

  4. Suppression d'un utilisateur :

    Pour supprimer un utilisateur, nous utilisons la commande :

    DROP USER 'nom_utilisateur'@'localhost';.

  5. Vérification des permissions :

    Pour vérifier les permissions d'un utilisateur, nous utilisons la commande :

    SHOW GRANTS FOR 'nom_utilisateur'@'localhost';.

  6. Connexion au serveur SQL à partir de Windows

    ou

Exemple pratique

Supposons que nous ayons une base de données utilisateurs et que nous voulions créer un nouvel utilisateur admin avec toutes les permissions sur cette base de données.

Ensuite, nous révoquerons la permission DELETE de cet utilisateur et vérifierons ses permissions.

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

# Création de l'utilisateur 'admin'
CREATE USER 'admin'@'localhost' IDENTIFIED BY '1mot2Passe+QueTresSécurisé';

# Donner toutes les permissions à 'admin' sur la base de données 'utilisateurs'
GRANT ALL PRIVILEGES ON utilisateurs.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;

# Vérification des permissions de 'admin'
SHOW GRANTS FOR 'admin'@'localhost';

# Révocation de la permission 'DELETE' de 'admin'
REVOKE DELETE ON utilisateurs.* FROM 'admin'@'localhost';

# Vérification des permissions de 'admin' après la révocation
SHOW GRANTS FOR 'admin'@'localhost';
astuce

Dans MySQL/MariaDB, pour afficher la liste des utilisateurs, on peut utiliser la requête suivante :

SELECT user, host FROM mysql.user;

Cette requête affiche les colonnes user et host de la table user de la base de données mysql.

Test de mémorisation/compréhension


Quelle commande utilisez-vous pour créer un nouvel utilisateur dans MariaDB ?


Quelle commande permet de donner toutes les permissions à un utilisateur sur une base de données ?


Quelle commande permet de révoquer une permission d'un utilisateur sur une base de données ?


Quelle commande permet de supprimer un utilisateur ?


Quelle commande permet de vérifier les permissions d'un utilisateur ?



remarque

Quand on ajoute WITH GRANT OPTIONS à la fin de la commande d'attribution des droits, cela donne la permission à l'utilisateurs de donner des droits à d'autres utilisateurs. Attention cela lui permet aussi de révoquer des droits. Par exemple :

GRANT ALL PRIVILEGES ON nom_de_la_base.* TO 'nom_utilisateur'@'localhost' WITH GRANT OPTIONS;

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 un utilisateur dans MariaDB, lui donner des permissions, révoquer des permissions et vérifier ses permissions.

Étapes du TP :

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

  2. Créez un nouvel utilisateur nommé etudiant avec le mot de passe 1mot2Passe+QueTresSécurisé.

  3. Donnez à l'utilisateur etudiant toutes les permissions sur la base de données ecole.

  4. Vérifiez les permissions de l'utilisateur etudiant.

    Si vous avez suivi correctement toutes les étapes, vous devriez voir les permissions de l'utilisateur etudiant.

  5. Déconnectez vous de MariaDB :

    exit
  6. Connectez-vous à MariaDB en tant qu'utilisateur etudiant (mot de passe = 1mot2Passe+QueTresSécurisé) :

    mysql -u etudiant -p

    L'indication du 'host' n'est pas nécessaire, par défaut ce sera localhost.

  7. Utilisez la base de données ecole

  8. Insérez les données suivantes dans la table etudiants :

    Si vous avez suivi correctement toutes les étapes, l'utilisateur etudiant doit avoir les permissions d'insérer ces données.

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

    Si vous avez suivi correctement toutes les étapes, vous devriez voir les données insérées dans la table etudiants.

Une solution