TP 1 Contröle D'acces Sur Une BD MYSQL [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

TP MYSQL : MISE EN ŒUVRE DES CONTROLES D’ACCESS SUR LES BASES DE DONNEES : PRIVILEGE DE CONTRÔLE MySQL

I- Installation de Mysql Se rendre sur le site : https://dev.mysql.com/downloads/workbench/

Selon votre système télécharger votre version. Il est préférable de prendre la première version. Après le téléchargement, lancez-le en double-cliquant dessus

1

Sélectionnez MySQL Servers, Applications, MySQL Shell. Ne sélectionnez pas MySQL For Excel et For Visual Studio.

2

3

4

Entrez un mot de passe pour votre utilisateur MySQL root (admin).

5

Après l’installation, ajouter MySQL aux variables d’environnement 6

Allez dans : C:\Program Files\MySQL\MySQL Server 8.0\bin Copier ce lien et ajouter le aux variables d’environnement.

7

8

9

Ouvrez cmd et tapez mysql –version

10

II. Création d’une base de données et des tables

Ouvrez MySQL Workbench 8.0 CE

Cliquer sur Local instance

11

Entrez vos identifiants et connectez-vous.

Apres etre connecte : créer une base de donnée nommée : etudiant CREATE DATABASE etudiant;

Creation de la table info_etudiant : USE etudiant; CREATE TABLE info_etudiant ( id INT PRIMARY KEY, nom VARCHAR(50) NOT NULL, prenom VARCHAR(50) NOT NULL, date_naissance DATE, adresse VARCHAR(100), email VARCHAR(100), telephone VARCHAR(20) );

Création de la table note USE etudiant; CREATE TABLE note ( id INT PRIMARY KEY, id_etudiant INT NOT NULL, matiere VARCHAR(50) NOT NULL, note FLOAT NOT NULL, FOREIGN KEY (id_etudiant) REFERENCES info_etudiant(id) );

12

Faites des insertions dans la table info_etudiant et note : USE etudiant;

INSERT INTO info_etudiant (id, nom, prenom, date_naissance, adresse, email, telephone) VALUES (1, 'konan', 'Rolan', '2001-02-23', 'INPHB', '[email protected]', '+225 0008014006');

Table note: USE etudiant;

INSERT INTO note (id, id_etudiant, matiere, note) VALUES (1, 1, 'cloud', 14.5);

13

III. Mode ligne de commande 1. connectez-vous au serveur MySQL Ici nous allons nous connecter avec l’utilisateur crée lors de l’installation CAD l’utilisateur root . Ouvrez cmd et entrez : mysql -u root -p

2- afficher les bases de données présentes : SHOW DATABASES ;

On voit bien notre base de données etudiant présente dans la liste. Selectionnez la BD etudiant : USE etudiant ; Affichez les tables de cette BD : SHOW TABLES ;

14

Affichez la description de la table note : DESCRIBE note ;

Affichez les données de la table info_etudiant : SELECT * FROM info_etudiant ;

Faites pareil pour la table note

3- Création d’utilisateur En tant que root, vous pouvez créer des utilisateurs. Créer l’utilisateur « toto » avec le mot de passe « toto123 » CREATE USER 'login'@'hote' [IDENTIFIED BY 'mot_de_passe'];

Login : Le login est un simple identifiant. Vous pouvez le choisir comme vous voulez. Il n'est pas obligatoire de l'entourer de guillemets, sauf s'il contient des caractères spéciaux comme - ou @. C'est cependant conseillé.

15

Hôte : L'hôte est l'adresse à partir de laquelle l'utilisateur va se connecter. Si l'utilisateur se connecte à partir de la machine sur laquelle le serveur MySQL se trouve, on peut utiliser 'localhost'. Sinon, on utilise en général une adresse IP ou un nom de domaine. CREATE USER 'toto'@'localhost' IDENTIFIED BY 'toto123';

Vérifier la création de toto dans Workbench

On voit bien l’utilisateur toto présent dans la table users and privileges

Connectez l’utilisateur toto : mysql -u toto -p

16

Essayons d’afficher les BD avec l’utilisateur toto : SHOW DATABASES ;

Nous voyons que deux tables présentes. Toto ne peux pas voir les bases de données etudiant et voiture. information_schema : cette base de données stocke les informations sur toutes les bases de données. Les tables, les colonnes, le type des colonnes, les procédures des bases de données y sont recensées, avec leurs caractéristiques. Nous verrons cette base de données plus en détail dans le prochain chapitre. performance_schema : permet de stocker des informations sur les actions effectuées sur le serveur (temps d'exécution, temps d'attente dus aux verrous, etc.) mais notre BD etudiant n’est pas là. Essayons cette même commande avec l’utilisateur root. Pour déconnecter un utilisateur c’est on entre la commande : quit

Avec l’utilisateur root, la commande SHOW DATABASES renvoi toutes les BD présentes, notre BD etudiant est bien là. Comment cela se fait-il que l’utilisateur toto ne peut voir ces BD ? cela est due aux privilèges et droit d’accès.

17

IV. Gestion des Privilèges Privilèges des utilisateurs Lorsque l'on se connecte à MySQL, on le fait avec un utilisateur. Chaque utilisateur possède une série de privilèges, relatifs aux données stockées sur le serveur : le privilège de sélectionner les données, de les modifier, de créer des objets, etc. Ces privilèges peuvent exister à plusieurs niveaux : base de données, tables, colonnes, procédures, etc. Stockage des utilisateurs et privilèges Toutes ces informations sont stockées dans la base de données mysql. Les utilisateurs sont stockés dans la table user, avec leurs privilèges globaux (c'est-à-dire valables au niveau du serveur, sur toutes les bases de données). La base mysql possède par ailleurs quatre tables permettant de stocker les privilèges des utilisateurs à différents niveaux. • • • •

db : privilèges au niveau des bases de données. tables_priv : privilèges au niveau des tables. columns_priv : privilèges au niveau des colonnes. proc_priv : privilèges au niveau des routines (procédures et fonctions stockées).

Les différents privilèges

Les principaux privilèges sont les suivants : Nom USAGE

Classe Niveau Serveur User

ALL [PRIVILEGES] Serveur User WITH GRANT OPTION Serveur User Nom Classe Niveau CREATE Serveur BD, Table DROP Serveur BD, Table ALTER Serveur Table Nom Classe Niveau SHOW DATABASES Client User SELECT Client Tuples INSERT Client Tuples UPDATE Client Tuples DELETE Client Tuples

Droit Pour créer un utilisateur sans droits. Tous les privilèges, sauf WITH GRANT OPTION Autorise l’utilisation de GRANT Droit Création (toutes les créations possible) Destruction de bases ou de tables Autorise l'utilisation de ALTER. Droit Autorise l'utilisation de SHOW DATABASES. Autorise l'utilisation de SELECT. Autorise l'utilisation de INSERT. Autorise l'utilisation de UPDATE. Autorise l'utilisation de DELETE.

18

Donner des privilèges : commande GRANT Syntaxe simplifiée GRANT privilege [,privilege] ON composant TO nomUtilisateur [IDENTIFIED BY motDePasse] [WITH GRANT OPTION]

GRANT [type de privilege] ON [nom base_donnée].[nom table] TO ‘user’@’localhost’ ;

Exemple : donnons le privilège : SHOW DATABASES à l’utilisateur toto.

GRANT SHOW DATABASES ON *.* TO ‘toto’@’localhost’;

D’abord connectons notre utilisateur root; mysql -u root -p

L’utilisateur root à accordé le privilège SHOW DATABASES à l’utilisateur toto.

Essayons de voir maintenant si toto peut lister toutes les bases de données. On déconnecte le root et on connecte toto avec la commande quit

mysql -u toto -p

19

Toto est bien connecté : Maintenant tapons SHOW DATABASES

20

Maintenant, toto peux voir les bases de données disponibles car il le droit de les voir.

Mais peut-il les tables présentent dans celles-ci ? Essayons de sélectionner la base de données etudiant avec l’utilisateur toto. USE etudiant ;

ERROR 1044 (42000): Access denied for user 'toto'@'localhost' to database 'etudiant' Nous voyons que toto peut afficher les bases de données mais n’a pas le privilège de les sélectionner. Donnons à toto tous les privilèges sur la base de données etudiant GRANT ALL ON etudiant TO 'toto'@'localhost';

Essayons à nouveau la commande use etudiant avec toto

21

La commande passe maintenant. Toto à tous les privilèges sur cette base de données etudiant mais pas sur les tables.

ERROR 1142 (42000): SELECT command denied to user 'toto'@'localhost' for table 'info_etudiant'

Accordons le droit SELECT sur la table info_etudiant à toto

22

GRANT SELECT ON etudiant.info_etudiant TO 'toto'@'localhost';

Maintenant essayons la commande SELECT sur la table info_etudiant.

Lorsque l'on accorde un privilège à un utilisateur, il faut également préciser à quoi s'applique ce privilège.

Niveau .

Application du privilège Privilège global : s'applique à toutes les bases de données, à tous les objets. Un privilège de ce niveau sera stocké dans la table mysql.user. 23

Niveau

Application du privilège Si aucune base de données n'a été préalablement sélectionnée (avec USE nom_bdd), c'est l'équivalent de . (privilège stocké * dans mysql.user). Sinon, le privilège s'appliquera à tous les objets de la base de données qu'on utilise (et sera stocké dans la table mysql.db). Privilège de base de données : s'applique à tous les objets de nom_bdd.* la base nom_bdd (stocké dans mysql.db). nom_bdd.nom_table Privilège de table (stocké dans mysql.tables_priv). Privilège de table : s'applique à la table nom_table de la base de données dans laquelle on se trouve, sélectionnée au nom_table préalable avec USE nom_bdd (stocké dans mysql.tables_priv). S'applique à la procédure (ou fonction) stockée nom_bdd.nom_routine nom_bdd.nom_routine (privilège stocké dans mysql.procs_priv).

24