sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan ændres en bruger til superbruger i PostgreSQL

  • Oprettelse af en ny bruger
  • Visning af eksisterende brugertilladelser
  • Ændring af eksisterende brugertilladelser
    • Tildeling af SUPERUSER Tilladelse
    • Tilbagekaldelse af tilladelser

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

  1. 4 måder at finde ud af, hvilke kolonner der returneres af en lagret procedure i SQL Server

  2. Find ud af, om Oracle-date er i en weekend?

  3. Sådan tilføjes en separator til en sammenkædet streng i MySQL – CONCAT_WS()

  4. Oracle - Hvilken TNS-navne-fil bruger jeg?