Easy-Micro


 
ESPACEMEMBRE MySQL
Vérif requêtes

Vérification des requêtes MySQL

Après avoir vérifier les privilèges de l'utilisateur au niveau de la connexion avec les trois premiers champs de la table user (Host, User et password), les privilèges sont ensuite vérifiés au niveau des différents privilèges de l'utilisateur à partir des tables user, db, host, tables_priv et columns_priv.

mysql> USE mysql;

mysql> SHOW tables;

MySQL vérifie d'abord si l'utilisateur à les privilèges pour exécuter sa requête au niveau de la table user, puis si les privilèges ne sont pas suffisants, il consulte les tables db et host conjointement. Si les privilèges ne suffisent pas, MySQL consulte la table tables_priv puis en dernier recours la table columns_priv. Si aucun privilège n'est trouvé, la requête est refusée pour l'utilisateur.

MySQL La table USER
mysql> DESCRIBE user;

La première colonne FIELD liste le trois champs de connexion (Host, User et password) puis les différents privilèges globaux de l'utilisateur, c'est à dire, ceux s'appliquant à toutes les bases de données et au serveur lui-même. Chaque champ est caractérisé par un type enum (qui n'accepte que les valeurs listés, ici : Y ou N). La valeur par défaut est N, le refus de privilège.

Descriptif des privilèges :
Select_priv : privilège de sélectionner (lire) des données.
Insert_priv : privilège d'insérer (ajouter) des données.
Update_priv : privilège de mettre à jour (modifier) des données... voir

MySQL Les tables db et host
La plupart des privilèges classique sont stockés dans ces tables.. La table db détermine quels utilisateurs peuvent se connecter depuis quels hôtes sur quelles base de données. Nous pouvons spécifier des privilèges liés à chacun de ces triples critères.

La table host est un complément de la table db. Elle permet de spécifier qu'un utilisateur peut se connecter depuis plusieurs hôtes en ayant des droits communs au niveau de la table db. Cette table évite les doublons au niveau de la table db. Il suffit de laisser le champ Host vide pour que MySQL lise la table host pour compléter ses informations. Dans ces deux table le caractère générique % est utilisé pour exprimer 'tous' ou 'tous le monde'.

mysql> DESCRIBE db;

Nous retrouvons dans la table db la majorité des privilèges de la table User. Seuls les privilèges lis au serveur ne sont pas présent ici : Reload_priv, ShutDown_priv...

mysql> DESCRIBE host;

Dans la table host, nous retrouvons les mêmes privilèges que dans la table db. Nous pouvons donc accorder des privilèges communs à tous les hôtes au niveau de la table db et accorder certains privilèges à certains hôtes au niveau de la table host.

mysql> USE mysql;
mysql> SELECT * FROM db;
mysql> SELECT * FROM host;

Réponse : empty set! Aucun privilèges n'est accordé à personne!

Accordons le privilège select à titi
mysql> GRANT select ON mabase.* TO titi@localhost;

Révoquons ce privilège
mysql> REVOKE select ON mabase.* TO titi@localhost;


MySQL Les tables tables_priv et columns_priv
Ces deux tables ont un fonctionnement similaire et permettent de stocker des privilèges liés aux tables et aux colonnes.

La table tables_priv détermine si un utilisateur peut agir sur une table si aucun droit plus général ne lui est accordé au niveau des tables user, db et host.

La table columns_priv détermine si un utilisateur peut agir sur une colonne d'une table si aucun droit plus général ne lui est accordé au niveau des tables user, db, host et tables_priv.

mysql> DESCRIBE tables_priv;

Accordons le privilège select à titi sur la table clients
mysql> GRANT select ON mabase.clients TO titi@localhost;

Révoquons ce privilège
mysql> REVOKE select ON mabase.clients TO titi@localhost;


Accordons à titi le privilège de lire les colonnes prenom et nom de la table clients
mysql> GRANT select(prenom, nom) ON mabase.clients TO titi@localhost;

Révoquons ce privilège
mysql> REVOKE select(prenom, nom) ON mabase.clients TO titi@localhost;



Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Mercredi 20 mars 2019 - Semaine 12 - Saint Herbert (Demain: Sainte Clémence)
Aujourd'hui, c'est l'anniversaire de Danièle Gilbert (1943-76 ans), animatrice de télévision française et de Marthe Villalonga (1932), actrice française. Autre 20 mars: 1815 : de retour de l'île d'Elbe et après une marche triomphale sur Paris, Napoléon entre dans la capitale. 1965 : France Gall gagne l'Eurovision pour le Luxembourg avec Poupée de cire poupée de son.
Haut de page Easy-Micro