venerdì 3 settembre 2010

MySQL: la gestione dei permessi

"Chi può fare cosa?" Una domanda che ricorre spesso in informatica. In MySQL la gestione dei permessi per gli utenti avviene con le clausole GRANT e REVOKE, sulla riga di comando del client. Per la concessione di privilegi bisogna osservare la seguente sintassi:
GRANT priv_type [column_list][,priv_type [column_list]]...
ON {*|*.*|db_name.*|db_name.tbl_name}
TO username [IDENTIFIED BY[PASSWORD] 'password'][,IDENTIFIED BY [PASSWORD] 'password']
Per la rimozione di permessi, invece:
REVOKE priv_type [column_list][,priv_type [column_list]]...
ON {*|*.*|db_name.*|db_name.tbl_name}
FROM username
I permessi che possiamo assegnare o revocare con con GRANT o REVOKE possono essere identificati dalle seguenti parole chiavi: SELECT (lettura dei valori in tabella), INSERT (scrittura di nuovi valori in tabella), UPDATE (modifica di valori in tabella), DELETE (eliminazione di valori presenti in tabella). Tali permessi, inoltre, possono essere combinati se separati con una virgola. Con la parola chiave ALL si abilitano (oppure vengono negati) all'utente tutti i permessi. Altri utili permessi sono: CREATE (per creare tabelle e/o database) e DROP (per cancellare tabelle e/o database).
Con la clausola ON possiamo estendere il permesso a uno o più database, e tabelle. Il simbolo * concede un permesso a tutti i database, la notazione *.* la estende invece a tutte le tabelle di tutti i database. Si può ovviamente essere più precisi se indichiamo il nome del database. La stringa nome_database.* estende il permesso a tutte le tabelle del database con con nome nome_database. Più precisa, infine, è la sintassi nome_database.nome_tabella che denota la tabella con nome nome_tabella del database con nome nome_database.
L'ultima clausola, TO, convoglia i permessi (da far valere nei confronti di tabelle e/o database) verso l'account di uno o più utenti. E' in questa clausola che occorre fornire il nome dell'utente coinvolto nella gestione dei permessi, facendo poi seguire alla parola chiave IDENTIFIED BY la password usata dallo stesso! Inoltre, se al nome dell'utente, dopo il simbolo @, indichiamo il nome dell'host da usare per la connessione obblighiamo l'utente a collegarsi al database sempre attraverso lo stesso host indicato nella GRANT. Se non specificato, di default, un utente può collegarsi da qualsiasi host. Per la revoca dei permessi, con REVOKE, è sufficiente indicare solo il nome dell'utente.

Nessun commento:

Posta un commento