• Aucun résultat trouvé

Tables de la base mysql

Dans le document CHEZ LE MÊME ÉDITEUR Du même auteur C. S (Page 181-185)

Routine level : privilèges globaux ou au niveau d’une base (CREATE ROUTINE, ALTER ROUTINE, EXECUTE, et GRANT) s’appliquant aux procédures cataloguées (étudiées au chapitre 7). Ces privilèges sont stockés dans la table mysql.procs_priv de la base mysql (exemple d’attribution d’un privilège routine : GRANT EXECUTE ON

…).

Tables de la base mysql

Cinq tables de la base de données mysql suffisent à MySQL pour stocker les privilèges (système et objet) de tous les utilisateurs. La figure suivante illustre comment MySQL déduit toutes ces prérogatives toujours en fonction des accès (couple utilisateur, machine).

Figure 5-2 Niveaux de privilèges

Jules Paul

mysql test

information_schema

bdjules bdpaul

Routine level

Global level

Database level Table level

Column level

ON *.*

ON bdpaul.*

ON bdpaul.Avion

nomComp bdpaul.Compagnie

PROCEDURE bdpaul.sp1

La colonne Db est en plus dans les tables host, tables_priv et columns_priv, car elle est nécessaire pour désigner la base de données sur laquelle portera le droit ou la famille de droits.

Supposons, pour nos exemples, que l’utilisateur Paul (accès en local) et la base de données bdpaul soient créés.

CREATE DATABASE bdpaul;

CREATE USER Paul@localhost IDENTIFIED BY 'iut';

Table mysql.user

Présenté brièvement au début du chapitre. Cette table est composée de 37 colonnes qui décrivent les privilèges au niveau global du serveur. Nous détaillons ici la signification des principales.

Privilèges objet (LMD) sur toutes les bases de données

La requête suivante extrait les prérogatives de Paul (et des autres). Pour l’instant, le caractère 'N' étant dans toutes les colonnes, il ne peut ni interroger une table (Select_priv), ni insé-rer dans une table (Insert_priv), ni en modifier (Update_priv), ni en supprimer (Delete_priv), et ce quelle que soit la base de données (excepté les bases système test et information_schema) sur laquelle il voudra se connecter.

SELECT Host, User, FROM mysql.user;

+---+---+---+---+---+---+

| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | +---+---+---+---+---+---+

| localhost | root | Y | Y | Y | Y |

| localhost | | Y | Y | Y | Y |

| % | | N | N | N | N |

| |

+---+---+---+---+---+---+

Figure 5-3 Stockage des prérogatives

Table user / db / host / tables_priv / columns_priv /procs_priv

+ + + + + + +

-| Host -| User -| … -| droit1 -| droit2 -| familledroit1 -| +--- +--- +--- --+--- +--- +---

---+----| localhost ---+----| root ---+----| ---+----| Y ---+----| Y ---+----| Y | …

| … | | | | | |

| … | | | | | |

| localhost | Paul | | N | Y | N | … +--- +--- +--- +--- +--- +---

Paul possède le privilège droit2

sur une base / table / objet Paul

root possède tous les privilèges sur une base / table / objet root

Select_priv, Insert_priv, Update_priv, Delete_priv

localhost | Paul | N | N | N | N

Vous pouvez, par analogie, pour cet exemple et pour les suivants, découvrir les prérogatives des autres accès (ici root et anonyme).

Privilèges objet (LDD) sur toutes les bases de données

La requête suivante extrait les prérogatives à propos des instructions LDD. Pour l’instant, le caractère 'N' étant dans toutes les colonnes, Paul ne peut ni créer une table ou une base (Create_priv), ni en supprimer (Drop_priv), ni créer ou supprimer un index (Index_

priv), ni modifier la structure d’une table, la renommer ou modifier une base (Alter_

priv), et ce quelle que soit la base de données (excepté les bases système test et information_schema).

SELECT Host, User, FROM mysql.user;

+---+---+---+---+---+---+

| Host | User | Create_priv | Drop_priv | Index_priv | Alter_priv | +---+---+---+---+---+---+

| localhost | root | Y | Y | Y | Y |

| localhost | | Y | Y | Y | Y |

| % | | N | N | N | N |

| |

+---+---+---+---+---+---+

Privilèges système (LCD) sur toutes les bases de données

La requête suivante extrait les prérogatives à propos des instructions LCD. Pour l’instant, le caractère 'N' étant dans toutes les colonnes, Paul ne peut ni créer un utilisateur (Create_

user_priv), ni transmettre des droits qu’il aura lui-même reçus (Grant_priv), ni lister les bases de données existantes (Show_db_priv), et ce quelle que soit la base de données.

SELECT Host,User, FROM mysql.user;

+---+---+---+---+---+

| Host | User | Create_user_priv | Grant_priv | Show_db_priv | +---+---+---+---+---+

| localhost | root | Y | Y | Y |

| localhost | | N | Y | Y |

| % | | N | N | N |

| |

+---+---+---+---+---+

Privilèges à propos des vues sur toutes les bases de données

La requête suivante extrait les prérogatives à propos des instructions relatives aux vues (views détaillées dans la section suivante). Pour l’instant, le caractère 'N' étant dans toutes les colonnes, Paul ne peut ni créer une vue (Create_view_priv), ni lister les vues existantes (Show_view_priv), et ce quelle que soit la base de données.

Create_priv, Drop_priv,Index_priv, Alter_priv

localhost | Paul | N | N | N | N

Create_user_priv, Grant_priv, Show_db_priv

localhost | Paul | N | N | N

SELECT Host,User, FROM mysql.user;

Privilèges à propos des procédures cataloguées sur toutes les bases de données La requête suivante extrait les prérogatives à propos des procédures cataloguées (détaillées dans le chapitre 7). Pour l’instant, le caractère 'N' étant dans toutes les colonnes, Paul ne peut ni créer une procédure (Create_routine_priv), ni en modifier (Alter_routine_

priv), ni en exécuter (Execute_priv), et ce quelle que soit la base de données.

SELECT Host,User, FROM mysql.user;

+---+---+---+---+---+

| Host | User | Create_routine_priv | Alter_routine_priv | Execute_priv | +---+---+---+---+---+

Privilèges à propos des restrictions d’utilisateur

La requête suivante extrait les prérogatives à propos des restrictions qu’on peut définir par accès. Pour l’instant, le chiffre étant à 0 dans toutes les colonnes, aucun accès (utilisateur) n’est limité concernant le nombre de requêtes (max_questions), de modifications (max_

updates), de connexions par heure (max_connections) et de connexions simultanées (max_user_connections) à un serveur.

SELECT Host, User, "Requetes", "Modifs" , "Connexions", "Cx simult."

Privilèges non abordés

D’autres colonnes de la table mysql.user sont intéressantes, mais sortent un peu du cadre de ce livre. J’ai donc fait l’impasse sur Create_tmp_table_priv (sert à créer des tables temporaires), Lock_tables_priv (pose des verrous explicites), Shutdown_priv (arrête et redémarre le serveur), Process_priv et Super_priv (gèrent les processus), File_

priv (accède aux fichiers du système d’exploitation), Repl_slave_priv et Repl_

client_priv (utilisés pour des aspects de réplication de données).

Nul doute que vous saurez vous servir de ces privilèges en temps voulu, par analogie avec ceux que nous allons étudier.

Le privilège References_priv n’est pas opérationnel encore. Il permettrait de bénéficier de l’intégrité référentielle entre deux tables appartenant à deux bases distinctes (par exemple la table Avion dans bd1 ferait référence par clé étrangère à la table Compagnie dans bd2).

Avant de présenter les autres tables (db, host, tables_priv, columns_priv et procs_

priv) de la base mysql, étudions les intructions relatives à l’attribution d’un privilège (GRANT), qu’il soit système ou objet, et celles relatives à la révocation d’un privilège (REVOKE).

Dans le document CHEZ LE MÊME ÉDITEUR Du même auteur C. S (Page 181-185)

Documents relatifs