- Oprettelse af en ny bruger
- Visning af eksisterende brugertilladelser
- Ændring af eksisterende brugertilladelser
- Tildeling af
SUPERUSER
Tilladelse - Tilbagekaldelse af tilladelser
- Tildeling af
Ændring af brugertilladelser i PostgreSQL kan variere fra ret simpelt til ekstremt komplekst, afhængigt af den permissive granularitet, der faktisk er påkrævet. I de fleste tilfælde er det dog den kraftfulde ALTER USER
kommando, der skal bruges til at gøre alt fra at tillade brugere at logge på, oprette databaser, administrere roller og endda blive en SUPERUSER
konto.
Vi vil kort udforske kraften i ALTER USER
kommando, så du nemt kan udføre en række forskellige tilladelsestildelinger og fjernelser, efterhånden som behovet opstår.
Oprettelse af en ny bruger
Før vi begynder at ændre brugertilladelser, bør vi oprette en ny brugerkonto (almindeligvis omtalt som en ROLE
) at rode med.
Til at begynde med viser vi alle eksisterende brugere:
=# SELECT usename FROM pg_user;
usename
----------
postgres
(1 row)
Som standard er postgres
er typisk den eneste bruger, der eksisterer, så vi ønsker at oprette en ny bruger af librarian
at styre vores library
database. Dette kan opnås ved at bruge CREATE USER
kommando:
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
usename
-----------
postgres
librarian
(2 rows)
Visning af eksisterende brugertilladelser
Det kan ofte være nyttigt at undersøge de eksisterende tilladelser, der er tildelt brugerne i systemet. Dette kan nemt opnås med \du
kommando fra psql
prompt:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Det kan vi tydeligt se, selvom vi nu har tilføjet en ny librarian
bruger, skal vi tildele den nogle tilladelser.
Ændring af eksisterende brugertilladelser
Nu hvor vores librarian
bruger eksisterer, kan vi begynde at bruge ALTER USER
for at ændre tilladelserne givet til librarian
.
Det grundlæggende format for ALTER USER
inkluderer navnet på brugeren (eller ROLE
) efterfulgt af en række options
at informere PostgreSQL om, hvilke tilladelige ændringer der skal foretages:
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;
Disse muligheder spænder fra CREATEDB
, CREATEROLE
, CREATEUSER
, og endda SUPERUSER
. Derudover har de fleste muligheder også en negativ modpart, der informerer systemet om, at du ønsker at afvise brugeren den pågældende tilladelse. Disse valgmuligheders navne er de samme som deres tildelingsmodstykke, men er præfikset med NO
(f.eks. NOCREATEDB
, NOCREATEROLE
, NOSUPERUSER
).
Tildeling af SUPERUSER
Tilladelse
Nu hvor vi forstår det grundlæggende i at oprette brugere og bruge ALTER USER
for at ændre tilladelser kan vi ganske enkelt bruge SUPERUSER
mulighed for at tildele vores librarian
bruger SUPERUSER
tilladelse:
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE
Sikkert nok, hvis vi viser vores tilladelsesliste nu, vil vi se librarian
har den nye SUPERUSER
tilladelse vi ønsker:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Tilbagekaldelse af tilladelser
I tilfælde af at vi laver en fejl og tildeler en tilladelse, vi senere ønsker at tilbagekalde, skal du blot udstede den samme ALTER USER
kommandoen, men tilføj NO
præfiks foran de tilladelige muligheder, der skal tilbagekaldes.
For eksempel kan vi fjerne SUPERUSER
fra vores librarian
bruger som sådan:
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}