Gestion des Utilisateurs

Gestion des Utilisateurs :
Les utilisateurs MySQL sont des entités auxquelles des autorisations sont attribuées pour accéder à la base de données.
Chaque utilisateur est identifié par un nom d'utilisateur et un hôte (l'adresse IP à partir de laquelle ils se connectent).
Pour créer un nouvel utilisateur, vous pouvez utiliser la commande CREATE USER.
Exemple de création d'un utilisateur :
CREATE USER 'nom_utilisateur'@'adresse_ip' IDENTIFIED BY 'mot_de_passe';
Une fois que l'utilisateur est créé, vous pouvez lui accorder des privilèges spécifiques pour les bases de données et les tables auxquelles il doit accéder.
Attribution et Révocation de Privilèges ::
Pour accorder des privilèges à un utilisateur ou un rôle, vous pouvez utiliser la commande GRANT.
Par exemple, pour accorder le privilège SELECT sur une base de données, vous pouvez faire :
GRANT SELECT ON ma_base_de_donnees.ma_table TO 'nom_utilisateur'@'adresse_ip';

GRANT SELECT ON ma_base_de_donnees.ma_table TO 'nom_utilisateur'@'localhost';
Pour révoquer un privilège, utilisez la commande REVOKE. Par exemple, pour révoquer le privilège SELECT :
REVOKE SELECT ON ma_base_de_donnees.ma_table FROM 'nom_utilisateur'@'adresse_ip';
Les privilèges incluent des opérations telles que SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc. Vous pouvez accorder ou révoquer ces privilèges au niveau de la base de données, des tables spécifiques ou des colonnes.
Exemple
1.Créer un utilisateur
CREATE USER 'NomUser'@'localhost' 
IDENTIFIED BY 'motDePasse';

2.Attribuer des droits à un utilisateur
un utilisateur de la base de données peut faire:
  1. -create table
  2. -update
  3. -select
  4. -delete
  5. -truncate
  6. -drop
  7. -insert
  8. -...
  GRANT SELECT ON basedonne1.* TO 'NomUser'@'localhost'
-->cet utilisateur peut faire selement select sur
-->toutes les tables de la basedonne1
Remarque
basedonne1.* => * : veut dire toutes tables basedonne1
On peut donner le nom de la table aussi

Afficher les droits les privilèges d'un utilisateurs

SHOW GRANTS FOR 'NomUser'@'localhost';
GRANT SELECT,update,delete  ON basedonne1.table1 TO 'NomUser'@'localhost';
l'utilisateur 'NomUser'@'localhost'; a les droits SELECT,update,delete sur la table table1 de la base de données basedonne1
all
Permet de donner toutes les privilèges à un utilisateur
GRANT ALL ON basedonne1.* TO 'NomUser'@'localhost';
Cette commade va attribuer toutes droits (select,update,...) à 'NomUser'@'localhost' sur toutes les tables .* de la base de données basedonne1
GRANT ALL ON *.* TO 'NomUser'@'localhost';
Afficher les droits d'accées
  show grants for 'NomUser'@'localhost';
Affiche
GRANT ALL PRIVILEGES ON *.* TO 'NomUser'@'localhost';
 -->All :toutes les commande sql
   -->*.* :
     --> fisrt * :toutes la base de données qui se trouve
	            --dans le serveur
		--second *:toutes les tables de la base de données


Exemple 1 : Création d'un utilisateur avec des privilèges de lecture sur la table "clients"
-- Crée un utilisateur "lecteur" avec un mot de passe
CREATE USER 'lecteur'@'localhost' IDENTIFIED BY 'mot_de_passe';

-- Accorde le privilège SELECT pour la table "clients" à l'utilisateur "lecteur"
GRANT SELECT ON gestionvente.clients TO 'lecteur'@'localhost';

Exemple 2 : Création d'un rôle pour les gestionnaires de produits

-- Crée un rôle "gestionnaire_produits"
CREATE ROLE 'gestionnaire_produits';

-- Accorde des privilèges UPDATE, INSERT et DELETE pour la table "produits" au rôle "gestionnaire_produits"
GRANT UPDATE, INSERT, DELETE ON gestionvente.produits TO 'gestionnaire_produits';
crée un rôle "gestionnaire_produits" et accorde des privilèges de mise à jour, d'insertion et de suppression pour la table "produits" aux utilisateurs qui appartiennent à ce rôle.
Exemple 3 : Attribution du rôle "gestionnaire_produits" à un utilisateur

-- Attribution du rôle "gestionnaire_produits" à l'utilisateur "utilisateur_gestionnaire"
GRANT 'gestionnaire_produits' TO 'utilisateur_gestionnaire'@'localhost';
Cela attribue le rôle "gestionnaire_produits" à l'utilisateur "utilisateur_gestionnaire", ce qui lui permet d'exécuter les opérations de mise à jour, d'insertion et de suppression sur la table "produits".
Exemple 4 : Création d'un utilisateur avec des privilèges administratifs

-- Crée un utilisateur "admin" avec un mot de passe
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mot_de_passe';

-- Accorde des privilèges GRANT OPTION pour la gestionvente.*
GRANT ALL PRIVILEGES ON gestionvente.* TO 'admin'@'localhost' WITH GRANT OPTION;
Cela crée un utilisateur "admin" avec des privilèges administratifs sur toutes les tables de la base de données "gestionvente". De plus, l'option "WITH GRANT OPTION" lui permet d'accorder ces privilèges à d'autres utilisateurs.
Exemple 5 : Révocation de privilèges pour un utilisateur

-- Révoque le privilège SELECT pour la table "clients" de l'utilisateur "lecteur"
REVOKE SELECT ON gestionvente.clients FROM 'lecteur'@'localhost';
Ce scénario révoque le privilège SELECT pour l'utilisateur "lecteur", l'empêchant ainsi d'accéder en lecture à la table "clients".
Exemple 6 : Suppression d'un utilisateur

-- Supprime l'utilisateur "lecteur"
DROP USER 'lecteur'@'localhost';
Cela supprime complètement l'utilisateur "lecteur" de la base de données, révoquant tous ses privilèges.
Exemple 9 : Création d'un utilisateur avec des privilèges de lecture sur plusieurs tables

-- Crée un utilisateur "lecteur_general" avec un mot de passe
CREATE USER 'lecteur_general'@'localhost' IDENTIFIED BY 'mot_de_passe';

-- Accorde le privilège SELECT pour les tables "clients", "produits" et "ventes" à l'utilisateur
GRANT SELECT ON gestionvente.clients TO 'lecteur_general'@'localhost';
GRANT SELECT ON gestionvente.produits TO 'lecteur_general'@'localhost';
GRANT SELECT ON gestionvente.ventes TO 'lecteur_general'@'localhost';
Exemple 11 : Utilisation de contrôles d'accès basés sur les rôles

-- Crée un rôle "gestionnaire_ventes" avec des privilèges pour gérer les ventes
CREATE ROLE 'gestionnaire_ventes';
GRANT INSERT, UPDATE, DELETE ON gestionvente.ventes TO 'gestionnaire_ventes';

-- Attribution du rôle "gestionnaire_ventes" à l'utilisateur "utilisateur_gestionnaire"
GRANT 'gestionnaire_ventes' TO 'utilisateur_gestionnaire'@'localhost';
Cet exemple montre comment un rôle "gestionnaire_ventes" est utilisé pour accorder des privilèges de gestion des ventes. Le rôle est ensuite attribué à un utilisateur spécifique.
Exemple 12 : Révocation d'un rôle d'un utilisateur

-- Révocation du rôle "gestionnaire_ventes" de l'utilisateur "utilisateur_gestionnaire"
REVOKE 'gestionnaire_ventes' FROM 'utilisateur_gestionnaire'@'localhost';
Exemple 13 : Création d'un utilisateur avec des privilèges d'insertion sur la table "clients"

-- Crée un utilisateur "ajout_client" avec un mot de passe
CREATE USER 'ajout_client'@'localhost' IDENTIFIED BY 'mot_de_passe';

-- Accorde le privilège INSERT sur la table "clients" à l'utilisateur "ajout_client"
GRANT INSERT ON gestionvente.clients TO 'ajout_client'@'localhost';
Cela permet à l'utilisateur "ajout_client" d'ajouter de nouveaux enregistrements à la table "clients".
Exemple 14 : Révocation de privilèges pour un rôle

-- Révoque le privilège INSERT sur la table "clients" du rôle "gestionnaire_produits"
REVOKE INSERT ON gestionvente.clients FROM 'gestionnaire_produits';
révoque le privilège d'insertion de la table "clients" pour le rôle "gestionnaire_produits", retirant ainsi le droit d'ajouter de nouveaux clients.
Exemple 15 : Création d'un utilisateur administrateur avec des privilèges sur toutes les tables

-- Crée un utilisateur "admin_gestionvente" avec un mot de passe
CREATE USER 'admin_gestionvente'@'localhost' IDENTIFIED BY 'mot_de_passe';

-- Accorde des privilèges d'administration sur toutes les tables de la base de données "gestionvente"
GRANT ALL PRIVILEGES ON gestionvente.* TO 'admin_gestionvente'@'localhost' WITH GRANT OPTION;
Cela crée un super utilisateur "admin_gestionvente" avec des privilèges d'administration sur toutes les tables de la base de données "gestionvente". L'option "WITH GRANT OPTION" lui permet d'accorder ces privilèges à d'autres utilisateurs.
Exemple 16 : Attribution d'un rôle avec des privilèges sur des vues

-- Crée un rôle "consultant_vues" avec des privilèges de lecture sur des vues
CREATE ROLE 'consultant_vues';
GRANT SELECT ON gestionvente.vues_statistiques TO 'consultant_vues';

-- Attribution du rôle "consultant_vues" à l'utilisateur "consultant"
GRANT 'consultant_vues' TO 'consultant'@'localhost';
Cet exemple montre comment un rôle "consultant_vues" est utilisé pour accorder des privilèges de lecture sur des vues aux utilisateurs.
Exemple 17 : Révocation de privilèges sur une vue

-- Révoque le privilège SELECT sur la vue "vues_statistiques" de l'utilisateur "consultant"
REVOKE SELECT ON gestionvente.vues_statistiques FROM 'consultant'@'localhost';
Révoque le privilège de lecture sur la vue "vues_statistiques" de l'utilisateur "consultant".
Exemple 20 : Suppression d'un utilisateur

-- Supprime l'utilisateur "ajout_client"
DROP USER 'ajout_client'@'localhost';