Bonjour à tous,
Je fais un cours MySQL à des étudiants qui doivent réaliser un projet.
Chaque étudiant a un compte (mon étudiant test est yann@%).
Chaque équipe d'étudiants correspond à un rôle que j'ai granté aux étudiants de l'équipe (par exemple EquipeZ pour yann@%).
J'ai créé un schéma dédié à chaque équipe (base_equipez), et j'ai granté tous les privilèges, avec la GRANT OPTION, au rôle représentant l'équipe.
Et pour tout ce qui est tables, vues, routines, etc. tout semble fonctionner correctement.

Par contre, je leur demande de
  • créer un rôle représentant un utilisateur standard de leur projet (roleZ)
  • granter les privilèges qu'ils estiment nécessaires à ce rôle (select sur une table du schéma)
  • créer un compte de test correspondant à un utilisateur standard (userZ)
  • granter le rôle utilisateur standard au compte utilisateur standard


Et c'est ce dernier GRANT qu'ils ne peuvent pas faire :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
-- session de yann@%
use base_equipez ; -- OK
create role roleZ ; -- OK
grant select on tablez to roleZ ; -- OK
create user 'Zorglub' identified by 'ojflsfglsdjlf' ; -- OK
grant roleZ to Zorglub ;
Error Code: 1227. Access denied; you need (at least one of) the WITH ADMIN, ROLE_ADMIN, SUPER privilege(s) for this operation
Si je leur grante ROLE_ADMIN, ça marche, mais du coup ils peuvent se dropper les uns les autres et ce n'est pas le but...
Je suppose qu'il faudrait que j'utilise WITH ADMIN OPTION quelque part, mais où ? C'est eux qui créent le rôle roleZ, et ils n'ont pas le droit de le granter ensuite ???

Merci pour toute piste !

PS : voici ce que je fait en amont en tant qu'admin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
create role EquipeZ ;
grant all on base_equipez.* to EquipeZ WITH GRANT OPTION ; 
GRANT CREATE USER ON *.* TO EquipeZ WITH GRANT OPTION ;
grant EquipeZ to yann WITH ADMIN OPTION ;