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.

Ces commandes vous permettront de gérer efficacement les mots de passe des utilisateurs dans votre base de données 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

Connexion au serveur SQL à partir de Windows

ou

7. Changement de mot de passe

Changement de mot de passe d'un utilisateur

Pour modifier le mot de passe d'un utilisateur existant dans MariaDB, vous pouvez utiliser l'une des méthodes suivantes :

  1. Utilisation de la commande SET PASSWORD :

    Vous pouvez changer le mot de passe d'un utilisateur en utilisant la commande suivante :

    SET PASSWORD FOR 'nom_utilisateur'@'localhost' = PASSWORD('nouveau_mot_de_passe');
  2. Utilisation de la commande ALTER USER :

    Une autre méthode consiste à utiliser la commande ALTER USER :

    ALTER USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';

Remarques :

  • Assurez-vous d'avoir les permissions nécessaires pour changer le mot de passe d'un utilisateur.
  • Après avoir changé le mot de passe, il n'est pas nécessaire d'exécuter FLUSH PRIVILEGES, car les changements sont immédiatement pris en compte.
  • Pour des raisons de sécurité, choisissez toujours un mot de passe fort et unique.

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