Ce face CURRENT_ROLE()
Un rol este un set de drepturi cu nume, care se acordă utilizatorilor (GRANT 'rol' TO 'ana'@'%'). Un rol acordat nu este activ automat: se activează cu SET ROLE sau devine activ la conectare dacă a fost setat cu SET DEFAULT ROLE.
CURRENT_ROLE() arată rolurile active acum, în formatul `rol`@`gazdă`, separate prin virgulă. Dacă niciun rol nu este activ, returnează textul NONE.
Ce returnează
Un text cu rolurile active sau NONE.
Exemple
Exemplul 1: Roluri active înainte și după SET ROLE
Creăm două roluri, le acordăm contului curent, le activăm pe rând, apoi le ștergem.
CREATE ROLE 'rol_cititor', 'rol_editor';
GRANT 'rol_cititor', 'rol_editor' TO CURRENT_USER();
SELECT CURRENT_ROLE() AS la_inceput;
SET ROLE 'rol_cititor';
SELECT CURRENT_ROLE() AS dupa_set_role;
SET ROLE ALL;
SELECT CURRENT_ROLE() AS toate_rolurile;
DROP ROLE 'rol_cititor', 'rol_editor';
Rezultat
+------------+
| la_inceput |
+------------+
| NONE |
+------------+
+-------------------+
| dupa_set_role |
+-------------------+
| `rol_cititor`@`%` |
+-------------------+
+------------------------------------+
| toate_rolurile |
+------------------------------------+
| `rol_cititor`@`%`,`rol_editor`@`%` |
+------------------------------------+
Greșeli frecvente
- Acorzi un rol și te aștepți ca drepturile să funcționeze imediat. Rolul trebuie activat cu
SET ROLEsau setat ca implicit cuSET DEFAULT ROLE ALL TO 'ana'@'%'; altfelCURRENT_ROLE()rămâneNONE.
Comenzi înrudite
ROLES_GRAPHML(): Returnează un document XML (GraphML) cu conturile, rolurile și legăturile dintre ele.CURRENT_USER(): Returnează contul MySQL cu care serverul a autentificat conexiunea; de el depind drepturile.USER(): Returnează utilizatorul și calculatorul de pe care s-a conectat clientul, ca text „nume@gazdă”.