Data Control Language
Svep för att visa menyn
Data Control Language (DCL) är en underuppsättning av SQL som används för att kontrollera åtkomst till data som lagras i ett relationsdatabashanteringssystem.
DCL-kommandon handlar främst om att bevilja eller återkalla rättigheter på databasobjekt såsom tabeller, vyer och scheman.
DCL-kommandon
De två huvudsakliga DCL-kommandona är:
-
GRANT: detta kommando används för att ge specifika rättigheter till användare eller roller; -
REVOKE: detta kommando används för att ta bort specifika rättigheter från användare eller roller som tidigare har beviljats.
Rättigheter
Objekt
Implementering
För att bevilja vissa rättigheter för ett objekt i SQL till en specifik användare kan vi använda följande sats:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Det finns tre typer av roller i databasen som du kan bevilja rättigheter till:
- user: en enskild databasanvändare;
- role: en databasroll, en namngiven grupp av rättigheter som kan tilldelas användare (t.ex. admin, developer, analyst);
- PUBLIC: ett särskilt nyckelord som ger de angivna rättigheterna till alla användare.
Vi kan tilldela en roll till en användare med följande sats:
GRANT role TO user;
Slutligen kan vi återkalla tidigare beviljade rättigheter med följande sats:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Exempel
Här är några exempel på hur du använder kommandot GRANT för att tilldela olika behörigheter på tabellerna bankaccounts och userlogs till olika roller och användare.
-- 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 återkalla några av de tilldelade behörigheterna:
-- 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;
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal