sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man ändrar en användare till Superuser i PostgreSQL

  • Skapa en ny användare
  • Visa befintliga användarbehörigheter
  • Ändra befintliga användarbehörigheter
    • Tilldelar SUPERUSER Tillstånd
    • Återkalla behörigheter

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 | {}

  1. Radmål, del 2:Semijoins

  2. Distribuera MariaDB Sharding med Spider med ClusterControl

  3. Hur konverterar man nummer till sträng i Oracle?

  4. Returnera tabellprivilegier från en länkad server i SQL Server (T-SQL-exempel)