sql >> Databáze >  >> RDS >> PostgreSQL

Jak změnit uživatele na superuživatele v PostgreSQL

  • Vytvoření nového uživatele
  • Zobrazení stávajících uživatelských oprávnění
  • Změna stávajících uživatelských oprávnění
    • Přiřazení SUPERUSER Povolení
    • Odvolání oprávnění

Úprava uživatelských oprávnění v rámci PostgreSQL se může pohybovat od poměrně jednoduchých až po extrémně složité, v závislosti na tolerantní granularitě, která je skutečně vyžadována. Ve většině případů je to však mocný ALTER USER příkaz, který by měl být použit k provádění všeho, od umožnění uživatelům přihlásit se, vytvářet databáze, spravovat role a dokonce se stát SUPERUSER účet.

Krátce prozkoumáme sílu ALTER USER tak můžete snadno provádět různá přiřazení a odebírání oprávnění podle potřeby.

Vytvoření nového uživatele

Než se pustíme do změn uživatelských oprávnění, měli bychom založit nový uživatelský účet (běžně označovaný jako ROLE ), se kterým si můžete pohrát.

Nejprve uvedeme seznam všech stávajících uživatelů:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Ve výchozím nastavení postgres je obvykle jediným uživatelem, který existuje, takže chceme vytvořit nového uživatele librarian k ovládání naší library databáze. To lze provést pomocí CREATE USER příkaz:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Zobrazení stávajících uživatelských oprávnění

Často může být užitečné prozkoumat stávající oprávnění přiřazená uživatelům v systému. To lze snadno provést pomocí \du příkaz z psql výzva:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Jasně to vidíme, i když jsme nyní přidali nového librarian uživateli, musíme mu přidělit nějaká oprávnění.

Změna stávajících uživatelských oprávnění

Nyní náš librarian uživatel existuje, můžeme začít používat ALTER USER upravit oprávnění udělená librarian .

Základní formát ALTER USER obsahuje jméno uživatele (nebo ROLE ) následuje řada options informovat PostgreSQL, které povolující změny provést:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Tyto možnosti se pohybují od CREATEDB , CREATEROLE , CREATEUSER a dokonce SUPERUSER . Kromě toho má většina možností také negativní protějšek, který informuje systém, že chcete zamítnout uživateli toto konkrétní oprávnění. Tyto názvy voleb jsou stejné jako jejich protějšek přiřazení, ale mají předponu NO (např. NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Přidělování SUPERUSER Povolení

Nyní, když rozumíme základům vytváření uživatelů a používání ALTER USER pro úpravu oprávnění můžeme docela jednoduše použít SUPERUSER možnost přiřadit našeho librarian uživatel SUPERUSER povolení:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Jistě, pokud nyní zobrazíme náš seznam oprávnění, uvidíme librarian má nového SUPERUSER povolení, které chceme:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Zrušení oprávnění

V případě, že uděláme chybu a přidělíme oprávnění, které si později přejeme zrušit, jednoduše zadejte stejné ALTER USER ale přidejte NO prefix před možnostmi povolení, které mají být odvolány.

Můžeme například odstranit SUPERUSER od našeho librarian uživatel takto:

=# 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. Obecná chyba:Neshoda verze OS

  2. Jak mohu zabránit Postgresu vložit poddotaz?

  3. Halloweenský problém – část 2

  4. Jak zkontrolovat velikost databáze a tabulky MySQL