Tietojen Hallintakieli
Pyyhkäise näyttääksesi valikon
Data Control Language (DCL) on SQL:n osa-alue, jota käytetään tietojen käyttöoikeuksien hallintaan relaatiotietokannan hallintajärjestelmässä.
DCL-komennot liittyvät ensisijaisesti käyttöoikeuksien myöntämiseen tai poistamiseen tietokantaobjekteista, kuten tauluista, näkymistä ja skeemoista.
DCL-komennot
Kaksi pääasiallista DCL-komentoa ovat:
-
GRANT: tätä komentoa käytetään tiettyjen käyttöoikeuksien myöntämiseen käyttäjille tai rooleille; -
REVOKE: tätä komentoa käytetään aiemmin myönnettyjen käyttöoikeuksien poistamiseen käyttäjiltä tai rooleilta.
Käyttöoikeudet
Objektit
Toteutus
Käyttöoikeuksien myöntämiseksi tietylle käyttäjälle SQL:ssä voidaan käyttää seuraavaa komentoa:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Tietokannassa on kolme roolityyppiä, joille voidaan myöntää käyttöoikeuksia:
- user: yksittäinen tietokannan käyttäjä;
- role: tietokantarooli, nimetty käyttöoikeusryhmä, joka voidaan liittää käyttäjiin (esim. admin, developer, analyst);
- PUBLIC: erityisavainsana, joka myöntää määritetyt käyttöoikeudet kaikille käyttäjille.
Rooli voidaan myöntää käyttäjälle seuraavalla komennolla:
GRANT role TO user;
Aiemmin myönnetyt käyttöoikeudet voidaan poistaa seuraavalla komennolla:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Esimerkki
Tässä on esimerkkejä siitä, miten GRANT-komentoa käytetään eri käyttöoikeuksien myöntämiseen bankaccounts- ja userlogs-tauluihin eri rooleille ja käyttäjille.
-- 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;
Nyt voimme peruuttaa joitakin myönnetyistä käyttöoikeuksista:
-- 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;
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme