Linguaggio di Controllo dei Dati
Data Control Language (DCL) è un sottoinsieme di SQL utilizzato per controllare l'accesso ai dati memorizzati in un sistema di gestione di database relazionali.
I comandi DCL si occupano principalmente di concedere o revocare privilegi su oggetti del database come tabelle, viste e schemi.
Comandi DCL
I due principali comandi DCL sono:
-
GRANT
: Questo comando viene utilizzato per concedere privilegi specifici a utenti o ruoli; -
REVOKE
: Questo comando viene utilizzato per rimuovere privilegi specifici da utenti o ruoli a cui erano stati precedentemente concessi.
Privilegi
Oggetti
Implementazione
Per concedere alcuni privilegi su un oggetto in SQL a un determinato utente, è possibile utilizzare la seguente istruzione:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Esistono 3 tipi di ruoli nel database a cui è possibile concedere privilegi:
- user: Un singolo utente del database;
- role: Un ruolo del database, un gruppo nominato di privilegi che può essere assegnato agli utenti (ad esempio admin, developer, analyst);
- PUBLIC: Una parola chiave speciale che concede i privilegi specificati a tutti gli utenti.
È possibile concedere un ruolo a un utente utilizzando la seguente istruzione:
GRANT role TO user;
Infine, è possibile revocare i privilegi precedentemente concessi utilizzando la seguente istruzione:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Esempio
Ecco alcuni esempi su come utilizzare il comando GRANT
per assegnare diversi privilegi sulle tabelle bankaccounts e userlogs a diversi ruoli e utenti.
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
Ora è possibile revocare alcuni dei privilegi concessi:
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 4.35
Linguaggio di Controllo dei Dati
Scorri per mostrare il menu
Data Control Language (DCL) è un sottoinsieme di SQL utilizzato per controllare l'accesso ai dati memorizzati in un sistema di gestione di database relazionali.
I comandi DCL si occupano principalmente di concedere o revocare privilegi su oggetti del database come tabelle, viste e schemi.
Comandi DCL
I due principali comandi DCL sono:
-
GRANT
: Questo comando viene utilizzato per concedere privilegi specifici a utenti o ruoli; -
REVOKE
: Questo comando viene utilizzato per rimuovere privilegi specifici da utenti o ruoli a cui erano stati precedentemente concessi.
Privilegi
Oggetti
Implementazione
Per concedere alcuni privilegi su un oggetto in SQL a un determinato utente, è possibile utilizzare la seguente istruzione:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Esistono 3 tipi di ruoli nel database a cui è possibile concedere privilegi:
- user: Un singolo utente del database;
- role: Un ruolo del database, un gruppo nominato di privilegi che può essere assegnato agli utenti (ad esempio admin, developer, analyst);
- PUBLIC: Una parola chiave speciale che concede i privilegi specificati a tutti gli utenti.
È possibile concedere un ruolo a un utente utilizzando la seguente istruzione:
GRANT role TO user;
Infine, è possibile revocare i privilegi precedentemente concessi utilizzando la seguente istruzione:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Esempio
Ecco alcuni esempi su come utilizzare il comando GRANT
per assegnare diversi privilegi sulle tabelle bankaccounts e userlogs a diversi ruoli e utenti.
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
Ora è possibile revocare alcuni dei privilegi concessi:
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
Grazie per i tuoi commenti!