Úvod
Správa databáze vyžaduje odstranění uživatelských účtů, zejména pokud uživatelský účet již není potřeba. Smazání nepotřebných uživatelů Postgresu je základním postupem zabezpečení databáze. Tato akce také odstraní potenciálně nepostřehnutelný přístupový bod pro hackery.
Tento tutoriál vysvětluje, jak několika způsoby vypustit uživatele Postgres.

Předpoklady
- Přístup k příkazovému řádku nebo terminálu s právy sudo.
- Nainstalován Postgres, nejlépe nejnovější verze.
- Opustit uživatele Postgres. Postupujte podle našeho návodu a vytvořte uživatele Postgres pro účely testování.
Smazat uživatele Postgres
Uživatel v PostgreSQL má ve výchozím nastavení přihlašovací práva. Existují dva způsoby odebrání uživatele a oba vyžadují přístup k CREATEROLE
práv. Chcete-li odstranit superuživatele, SUPERUSER
privilegium je povinné.
postgres uživatel vytvořený během instalace má ve výchozím nastavení všechna potřebná oprávnění. Níže uvedené příklady používají postgres uživatele pro připojení k PostgreSQL.
Metoda 1:Odstranění uživatele Postgres pomocí nástroje dropuser
Postgres nabízí klientský nástroj pro odebrání uživatele bez připojení k rozhraní příkazového řádku PSQL.
Smazání uživatele v Postgres pomocí dropuser
, spusťte v terminálu následující příkaz:
sudo -u postgres dropuser <user> -e

Případně rozdělte příkaz do dvou kroků:
1. Přepněte na postgres uživatel (nebo jiný uživatel se správnými oprávněními):
sudo su - postgres
2. Spusťte příkaz dropuser:
dropuser <name> -e

V obou případech Postgres odebere uživatele.
Metoda 2:Odstranění uživatele Postgres pomocí příkazu DROP USER
Dalším způsobem, jak odstranit uživatele z databáze Postgres, je použití příkazu PSQL.
Chcete-li odstranit uživatele, postupujte podle následujících kroků:
1. Připojte se ke klientovi PSQL přes terminál pomocí následujícího příkazu:
sudo -u postgres psql

Terminál se změní na konzolu PSQL (postgres=#
).
2. Seznam všech uživatelů a rolí s:
\du

Vyhledejte uživatele, kterého chcete odebrat, a použijte jeho jméno v následujícím kroku.
3. Chcete-li uživatele odstranit, spusťte následující dotaz:
DROP USER <name>;

Alternativně, chcete-li zkontrolovat, zda uživatel před přetažením existuje, zadejte:
DROP USER IF EXISTS <name>;

Klient upozorní, pokud role neexistuje.
4. Znovu zobrazte seznam uživatelů, abyste potvrdili, že uživatel je pryč:
\du

Uživatel již není na seznamu rolí. Tento výstup indikuje úspěšné smazání.
Smazat více uživatelů Postgres
Klient PSQL umožňuje smazat více než jednoho uživatele Postgres najednou. Níže uvedené pokyny vysvětlují, jak se připojit ke klientovi PostgreSQL a odstranit více uživatelů.
1. Připojte se ke klientovi PSQL pomocí:
sudo -u postgres psql
2. Seznam všech uživatelů s:
\du
Vyhledejte uživatele k odstranění a použijte jejich jména v následujícím kroku.
3. Odstraňte více uživatelů Postgres tak, že jednotlivé uživatele oddělíte čárkou:
DROP USER [IF EXISTS] <name>, <name>, ... <name>;

Příkaz odebere více rolí najednou. Přidejte IF EXISTS
přeskočit uživatele, kteří nejsou k dispozici.
4. Znovu zkontrolujte seznam uživatelů a potvrďte, že všechny role byly odstraněny:
\du
Odebraní uživatelé již nejsou na seznamu.
Smazat uživatele Postgres se závislostmi
Pokus o odebrání uživatele Postgres se závislostmi selže a zobrazí chybu.

Chcete-li uživatele bezpečně odebrat, proveďte následující:
1. Přiřaďte vlastnictví objektu z podrobností o chybě jinému uživateli. Například k převodu objektů vlastněných myuser do postgres , spustit:
REASSIGN OWNED BY myuser TO postgres;

Dotaz změní vlastnictví objektu na postgres uživatel.
2. Odeberte připojení databázového objektu k uživateli pomocí:
DROP OWNED BY myuser;

Tento krok také odebere všechna oprávnění, která má uživatel k objektu.
3. V tuto chvíli již uživatel nemá žádné závislosti. Chcete-li uživatele zahodit, spusťte:
DROP USER myuser;

Protože neexistují žádné závislosti, odstranění je úspěšné.
Smazat roli Postgres
Chcete-li odstranit roli Postgres, spusťte v klientovi PSQL následující příkaz:
DROP ROLE [IF EXISTS] <name>;
DROP USER
příkaz je alias pro DROP ROLE
. Uživatelé Postgres jsou role s LOGIN
oprávnění. Proto oba DROP USER
a DROP ROLE
jsou zaměnitelné a fungují jak pro uživatele, tak pro role.