Data Control Language
Stryg for at vise menuen
Data Control Language (DCL) er en undergruppe af SQL, der anvendes til at kontrollere adgangen til data, som er gemt i et relationelt databasehåndteringssystem.
DCL-kommandoer omhandler primært tildeling eller tilbagekaldelse af rettigheder på databaseobjekter såsom tabeller, views og skemaer.
DCL-kommandoer
De to vigtigste DCL-kommandoer er:
-
GRANT: denne kommando bruges til at tildele specifikke rettigheder til brugere eller roller; -
REVOKE: denne kommando bruges til at fjerne specifikke rettigheder fra brugere eller roller, som tidligere har fået dem tildelt.
Rettigheder
Objekter
Implementering
For at tildele rettigheder til et objekt i SQL for en bestemt bruger kan følgende statement anvendes:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Der findes 3 typer roller i databasen, som kan tildeles rettigheder:
- user: en individuel databasebruger;
- role: en databaserolle, en navngiven gruppe af rettigheder, der kan tildeles brugere (f.eks. admin, developer, analyst);
- PUBLIC: et særligt nøgleord, der tildeler de angivne rettigheder til alle brugere.
En rolle kan tildeles en bruger med følgende statement:
GRANT role TO user;
Tidligere tildelte rettigheder kan tilbagekaldes med følgende statement:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Eksempel
Her er nogle eksempler på, hvordan GRANT-kommandoen bruges til at tildele forskellige rettigheder på tabellerne bankaccounts og userlogs til forskellige roller og brugere.
-- 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;
Nu kan vi tilbagekalde nogle af de tildelte rettigheder:
-- 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;
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat