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
What is the difference between GRANT and REVOKE commands?
Can you explain what each privilege allows a user to do?
How do roles and users differ in terms of privileges?
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!