{DEFINER | INVOKER}.
Syntaxe de création des vues et des procédures, clauses DEFINER et SQL SECURITY comprises.
Code : SQL
-- Vues
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { utilisateur | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW nom_vue [(liste_colonnes)]
AS requete_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
-- Procédures
CREATE
[DEFINER = { utilisateur | CURRENT_USER }]
PROCEDURE nom_procedure ([parametres_procedure])
SQL SECURITY { DEFINER | INVOKER }
corps_procedure
Exemple : création, par l'utilisateur root, de deux vues avec des contextes de vérification des privilèges différents.
Code : SQL
CREATE DEFINER = CURRENT_USER
SQL SECURITY DEFINER
VIEW test_contexte1
AS SELECT * FROM Race;
CREATE DEFINER = CURRENT_USER
SQL SECURITY INVOKER
VIEW test_contexte2
AS SELECT * FROM Race;
Toujours avec l'utilisateur root, on autorise john à faire des SELECT sur ces vues.
Code : SQL
GRANT SELECT ON elevage.test_contexte1 TO 'john'@'localhost';
GRANT SELECT ON elevage.test_contexte2 TO 'john'@'localhost';
Utilisons maintenant ces vues avec l'utilisateur john, qui n'a toujours aucun droit sur Race.
Code : SQL
SELECT * FROM test_contexte1;
SELECT * FROM test_contexte2;
La première requête affiche bien la table Race. Par contre, la seconde échoue avec l'erreur suivante :
Code : Console
ERROR 1356 (HY000): View 'elevage.test_contexte2' references invalid table(s) or column(s
Partie 7 : Gestion des utilisateurs et configuration du serveur
390/414
www.openclassrooms.com
Syntaxe de création des vues et des procédures, clauses DEFINER et SQL SECURITY comprises.
Code : SQL
-- Vues
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { utilisateur | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW nom_vue [(liste_colonnes)]
AS requete_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
-- Procédures
CREATE
[DEFINER = { utilisateur | CURRENT_USER }]
PROCEDURE nom_procedure ([parametres_procedure])
SQL SECURITY { DEFINER | INVOKER }
corps_procedure
Exemple : création, par l'utilisateur root, de deux vues avec des contextes de vérification des privilèges différents.
Code : SQL
CREATE DEFINER = CURRENT_USER
SQL SECURITY DEFINER
VIEW test_contexte1
AS SELECT * FROM Race;
CREATE DEFINER = CURRENT_USER
SQL SECURITY INVOKER
VIEW test_contexte2
AS SELECT * FROM Race;
Toujours avec l'utilisateur root, on autorise john à faire des SELECT sur ces vues.
Code : SQL
GRANT SELECT ON elevage.test_contexte1 TO 'john'@'localhost';
GRANT SELECT ON elevage.test_contexte2 TO 'john'@'localhost';
Utilisons maintenant ces vues avec l'utilisateur john, qui n'a toujours aucun droit sur Race.
Code : SQL
SELECT * FROM test_contexte1;
SELECT * FROM test_contexte2;
La première requête affiche bien la table Race. Par contre, la seconde échoue avec l'erreur suivante :
Code : Console
ERROR 1356 (HY000): View 'elevage.test_contexte2' references invalid table(s) or column(s
Partie 7 : Gestion des utilisateurs et configuration du serveur
390/414
www.openclassrooms.com
