Înainte de MySQL 8.0, acordarea permisiunilor se făcea individual pentru fiecare utilizator în parte. Dacă aveai 20 de dezvoltatori sau analiști de date și trebuia să modifici drepturile pe un tabel, trebuia să execuți zeci de comenzi GRANT sau REVOKE pentru fiecare cont separat.
Sistemul de Roluri (MySQL Roles) permite definirea unei colecții numite de privilegii (ex: rol de raportare doar în citire, rol de dezvoltator, rol de suport clienți). Utilizatorii primesc un rol, iar orice modificare ulterioară adusă rolului se propagă instantaneu către toți utilizatorii asociați.
-- 1. Crearea rolului dedicat analiștilor de date
CREATE ROLE 'analist_raportare';
-- 2. Acordarea privilegiilor exclusiv de citire pe baza de date 'magazin'
GRANT SELECT ON magazin.* TO 'analist_raportare';
-- 3. Crearea unui cont de utilizator obișnuit
CREATE USER 'elena'@'%' IDENTIFIED BY 'ParolaComplexa!2026';
-- 4. Asignarea rolului către utilizator
GRANT 'analist_raportare' TO 'elena'@'%';
-- 5. OBLIGATORIU: Activarea rolului implicit la conectare
-- (Fără această comandă, utilizatorul ar trebui să ruleze manual SET ROLE 'analist_raportare')
SET DEFAULT ROLE 'analist_raportare' TO 'elena'@'%';
-- Verificarea privilegiilor active ale unui utilizator:
SHOW GRANTS FOR 'elena'@'%' USING 'analist_raportare';
Revocarea sau Ștergerea unui Rol
-- Revocarea drepturilor unui rol de la un utilizator specific:
REVOKE 'analist_raportare' FROM 'elena'@'%';
-- Ștergerea definitivă a rolului de pe server:
DROP ROLE 'analist_raportare';