- Skapa en ny användare
- Visa befintliga användarbehörigheter
- Ändra befintliga användarbehörigheter
- Tilldelar
SUPERUSER
Tillstånd - Återkalla behörigheter
- Tilldelar
Att ändra användarbehörigheter inom PostgreSQL kan variera från ganska enkelt till extremt komplext, beroende på den tillåtande granularitet som faktiskt krävs. I de flesta fall är det dock den kraftfulla ALTER USER
kommando som bör användas för att göra allt från att tillåta användare att logga in, skapa databaser, hantera roller och till och med bli en SUPERUSER
konto.
Vi ska kort utforska kraften i ALTER USER
kommando så att du enkelt kan utföra en mängd olika behörighetstilldelningar och borttagningar när behovet uppstår.
Skapa en ny användare
Innan vi börjar förändra användarbehörigheter bör vi skapa ett nytt användarkonto (kallas vanligen en ROLE
) att bråka med.
Till att börja med listar vi alla befintliga användare:
=# SELECT usename FROM pg_user;
usename
----------
postgres
(1 row)
Som standard är postgres
är vanligtvis den enda användaren som finns, så vi vill skapa en ny användare av librarian
för att kontrollera vårt library
databas. Detta kan åstadkommas med CREATE USER
kommando:
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
usename
-----------
postgres
librarian
(2 rows)
Visa befintliga användarbehörigheter
Det kan ofta vara användbart att undersöka de befintliga behörigheter som tilldelats användarna i systemet. Detta kan enkelt göras med \du
kommandot från psql
uppmaning:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Vi kan tydligt se det även om vi nu har lagt till en ny librarian
användare måste vi tilldela den några behörigheter.
Ändra befintliga användarbehörigheter
Nu när vår librarian
användare finns, kan vi börja använda ALTER USER
för att ändra de behörigheter som beviljats librarian
.
Grundformatet för ALTER USER
inkluderar namnet på användaren (eller ROLE
) följt av en serie options
för att informera PostgreSQL vilka tillåtande ändringar som ska göras:
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;
Dessa alternativ sträcker sig från CREATEDB
, CREATEROLE
, CREATEUSER
, och till och med SUPERUSER
. Dessutom har de flesta alternativ också en negativ motsvarighet, som informerar systemet om att du vill neka användaren den särskilda behörigheten. Dessa alternativnamn är samma som deras tilldelningsmotsvarighet, men har prefixet NO
(t.ex. NOCREATEDB
, NOCREATEROLE
, NOSUPERUSER
).
Tilldelar SUPERUSER
Tillstånd
Nu när vi förstår grunderna för att skapa användare och använda ALTER USER
för att ändra behörigheter kan vi helt enkelt använda SUPERUSER
möjlighet att tilldela vår librarian
användare SUPERUSER
tillstånd:
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE
Visst, om vi visar vår behörighetslista nu, ser vi librarian
har den nya SUPERUSER
tillåtelse vi vill ha:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Återkalla behörigheter
I händelse av att vi gör ett misstag och tilldelar en behörighet som vi senare vill återkalla, utfärdar du bara samma ALTER USER
kommandot men lägg till NO
prefix framför de tillåtna alternativen som ska återkallas.
Till exempel kan vi ta bort SUPERUSER
från vår librarian
användare som så:
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}