Partie I
SQL de base
166
© Éditions Eyrolles
Utilisons cette commande pour extraire les profils de Jules, de Paul et de l’administrateur
en chef (accès en local). J’avoue avoir un peu retravaillé l’état de sortie (sans en modifier une
ligne quand même).
SHOW GRANTS FOR 'Jules'@'localhost';
+---------------------------------------------------------------------------+
| Grants for Jules@localhost
|
+---------------------------------------------------------------------------+
| GRANT CREATE ON *.* TO 'Jules'@'localhost' IDENTIFIED BY PASSWORD
'*6AE163FB9EE8BB011EB2E87316AA5BE563A6CDB7' WITH MAX_QUERIES_PER_HOUR 50
MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 6 MAX_USER_CONNECTIONS 3 |
| GRANT SELECT (titre) ON `bdpaul`.`Livre` TO 'Jules'@'localhost'
WITH GRANT OPTION
|
+---------------------------------------------------------------------------+
On remarque que MySQL a regroupé deux privilèges en une instruction GRANT (CREATE et
les restrictions de connexions). Par là même, on se rend compte que les prérogatives de
connexion sont au niveau global, bien qu’on les ait spécifiées au niveau database.
SHOW GRANTS FOR 'Paul'@'localhost';
+---------------------------------------------------------------------------+
| Grants for Paul@localhost
|
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'Paul'@'localhost' IDENTIFIED BY PASSWORD
'*6AE163FB9EE8BB011EB2E87316AA5BE563A6CDB7'
|
| GRANT CREATE, DROP ON `bdpaul`.* TO 'Paul'@'localhost'
|
| GRANT SELECT, INSERT, UPDATE (ISBN), DELETE, ALTER ON `bdpaul`.`Livre`
TO 'Paul'@'localhost'
|
+---------------------------------------------------------------------------+
On remarque que MySQL a regroupé tous les privilèges sur la table Livre en une instruction
GRANT. La première exprime le fait que Paul peut se connecter à toutes les bases (par USE
nomBase), mais qu’il ne pourra travailler en réalité que dans bdpaul.
SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------------+
| Grants for root@localhost
|
+---------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*387E25FE2CF7ED941E43A76AD9402825401698FC' WITH GRANT OPTION
|
+---------------------------------------------------------------------------+
On remarque que MySQL n’attribue qu’un seul droit, mais le plus fort ! Tous les droits (ALL
PRIVILEGES) sur toutes les bases (*.*), avec en prime la clause GRANT OPTION qui
permet de retransmettre n’importe quoi à n’importe qui, ou de tout révoquer.
Interrogeons à nouveau la table user de la base mysql stockant les prérogatives au niveau
global du moment. Le droit de création en local de Jules apparaît sur toutes les bases.
SQL de base
166
© Éditions Eyrolles
Utilisons cette commande pour extraire les profils de Jules, de Paul et de l’administrateur
en chef (accès en local). J’avoue avoir un peu retravaillé l’état de sortie (sans en modifier une
ligne quand même).
SHOW GRANTS FOR 'Jules'@'localhost';
+---------------------------------------------------------------------------+
| Grants for Jules@localhost
|
+---------------------------------------------------------------------------+
| GRANT CREATE ON *.* TO 'Jules'@'localhost' IDENTIFIED BY PASSWORD
'*6AE163FB9EE8BB011EB2E87316AA5BE563A6CDB7' WITH MAX_QUERIES_PER_HOUR 50
MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 6 MAX_USER_CONNECTIONS 3 |
| GRANT SELECT (titre) ON `bdpaul`.`Livre` TO 'Jules'@'localhost'
WITH GRANT OPTION
|
+---------------------------------------------------------------------------+
On remarque que MySQL a regroupé deux privilèges en une instruction GRANT (CREATE et
les restrictions de connexions). Par là même, on se rend compte que les prérogatives de
connexion sont au niveau global, bien qu’on les ait spécifiées au niveau database.
SHOW GRANTS FOR 'Paul'@'localhost';
+---------------------------------------------------------------------------+
| Grants for Paul@localhost
|
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'Paul'@'localhost' IDENTIFIED BY PASSWORD
'*6AE163FB9EE8BB011EB2E87316AA5BE563A6CDB7'
|
| GRANT CREATE, DROP ON `bdpaul`.* TO 'Paul'@'localhost'
|
| GRANT SELECT, INSERT, UPDATE (ISBN), DELETE, ALTER ON `bdpaul`.`Livre`
TO 'Paul'@'localhost'
|
+---------------------------------------------------------------------------+
On remarque que MySQL a regroupé tous les privilèges sur la table Livre en une instruction
GRANT. La première exprime le fait que Paul peut se connecter à toutes les bases (par USE
nomBase), mais qu’il ne pourra travailler en réalité que dans bdpaul.
SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------------+
| Grants for root@localhost
|
+---------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*387E25FE2CF7ED941E43A76AD9402825401698FC' WITH GRANT OPTION
|
+---------------------------------------------------------------------------+
On remarque que MySQL n’attribue qu’un seul droit, mais le plus fort ! Tous les droits (ALL
PRIVILEGES) sur toutes les bases (*.*), avec en prime la clause GRANT OPTION qui
permet de retransmettre n’importe quoi à n’importe qui, ou de tout révoquer.
Interrogeons à nouveau la table user de la base mysql stockant les prérogatives au niveau
global du moment. Le droit de création en local de Jules apparaît sur toutes les bases.
