Informazioni sui ruoli
MariaDB starting with 10.0.5
I ruoli sono stati introdotti in MariaDB 10.0.5.
I ruoli legano insieme un certo numero di privilegi. Aiutano le grandi organizzazioni dove, generalmente, un certo numero di utenti dispone degli stessi privilegi e, precedentemente, l'unico modo per modificare i privilegi di un gruppo di utenti era modificarli individualmente.
In alternativa, è possibile assegnare a più persone lo stesso utente, ma in questo modo non è possibile vedere quale utente è effettivamente responsabile di una certa azione.
Con i ruoli, l'amministrazione è più semplice. Per esempio, ad alcuni utenti potrebbe essere assegnato un ruolo giornalista, con gli stessi privilegi. Per modificare i diritti dei giornalisti sarà sufficiente modificare i privilegi del ruolo, mente i singoli utenti sono ancora legati ad ogni cambiamento da loro effettuato.
Per creare i ruoli si usa l'istruzione CREATE ROLE e per eliminarli si usa DROP-ROLE. E' possibile assegnarli agli utenti tramite un'estensione dell'istruzione GRANT, mentre i permessi possono essere assegnati con una normale GRANT. Similarmente, con REVOKE è possibile revocare un ruolo ad un utente, o revocare un permesso da un ruolo.
Una volta coonnesso, un utente può attivare un ruolo con l'istruzione SET ROLE, mentre la funzione CURRENT_ROLE restituisce il ruolo attivo per la sessione corrente, se esiste.
Esempi
Creare un ruolo e assegnare un permesso:
CREATE ROLE journalist; GRANT SHOW DATABASES ON *.* TO journalist; GRANT journalist to hulda;
L'utente hulda imposta un ruolo per la sessione corrente per poter acquisire i permessi:
SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ SELECT CURRENT_ROLE; +--------------+ | CURRENT_ROLE | +--------------+ | NULL | +--------------+ SET ROLE journalist; SELECT CURRENT_ROLE; +--------------+ | CURRENT_ROLE | +--------------+ | journalist | +--------------+ SHOW DATABASES; +--------------------+ | Database | +--------------------+ | ... | | information_schema | | mysql | | performance_schema | | test | | ... | +--------------------+ SET ROLE NONE;