Tilgangskontroll og administasjon

Generelt

For å drive et databasesystem, trenger man en databaseadministrator(DBA).
Oppgaven til DBA er å administrere brukere og databaser, og å konfigurere databaseserveren.
En viktig del av konfigurasjonen av serveren er tilgangskontroll, det vil si at man setter opp regler for hvem som skal få koble seg til serveren og de ulike databasene,
og hva forskjellige brukere skal få lov til å gjøre på systemet.
Mye av funksjonaliteten i forhold til hvordan man oppretter databaser og brukere, antall og kompleksitet på konfigurasjonsfiler osv er forskjellig fra system til system.

grant/revoke

Også syntax for grant og revoke kan være litt forskjellig fra system til system. Sjekk dokumentasjonen for den databasen du jobber med for å se hvordan ting gjøres og hva som er tilgjengelig i den databasen du jobber med

Syntax

  GRANT {<rettighetsliste | ALL PRIVILEGES>}
  ON <objekt>
  TO {<brukerliste | PUBLIC>}
  [WITH GRANT OPTION]
  
  REVOKE [GRANT OPTION FOR] {<rettighetsliste | ALL PRIVILEGES>}
  ON <objekt>
  FROM {<brukerliste | PUBLIC>} [RESTRICT | CASCADE]
  

der <rettighetsliste> kan være en eller flere av disse(avhengig av databasesystem):

WITH GRANT OPTION betyr at brukerne i <brukerliste> kan gi videre (med GRANT) til andre brukere de rettighetene de har fått

GRANT OPTION FOR betyr at brukerne i <brukerliste> blir fratatt muligheten til å gi andre rettigheter(med GRANT) som de har fått

RESTRICT og CASCADE brukes i forbindelse med pekere
RESTRICT betyr at man får feil ved kjøring av REVOKE dersom tabellen man forsøker å hindre tilgangen til er referert til av et annet objekt(f.eks et view)
CASCADE sørger for at alle objekter som det blir referert fra rekursivt slettes.

Eksempler

I)

Bruker per gir med følgende kommando brukerne paal og espen rettigheter til SELECT på tabellen prinsesse:

  GRANT SELECT
  ON prinsesse
  TO paal, espen;
  

II)

Brukeren jens fratar med følgende kommando brukerne karius og baktus rettighetene til DELETE på tabellen tann:

  REVOKE DELETE
  ON tann
  FROM karius, baktus;