Introduzione
L'amministrazione di un database richiede la rimozione degli account utente, soprattutto se un account utente non è più necessario. L'eliminazione di utenti Postgres non necessari è una pratica essenziale per la sicurezza del database. Questa azione rimuove anche un punto di accesso potenzialmente impercettibile per gli hacker.
Questo tutorial spiega come eliminare un utente Postgres in diversi modi.

Prerequisiti
- Accesso alla riga di comando o al terminale con privilegi sudo.
- Postgres installato, preferibilmente l'ultima versione.
- Utenti Postgres da abbandonare. Segui il nostro tutorial per creare utenti Postgres a scopo di test.
Elimina un utente Postgres
Un utente in PostgreSQL ha i privilegi di accesso per impostazione predefinita. Esistono due metodi per rimuovere un utente ed entrambi richiedono l'accesso a CREATEROLE
diritti. Per eliminare un superutente, il SUPERUSER
il privilegio è obbligatorio.
I postgres l'utente creato durante l'installazione dispone di tutti i privilegi necessari per impostazione predefinita. Gli esempi seguenti utilizzano postgres utente per connettersi a PostgreSQL.
Metodo 1:eliminare un utente Postgres con l'utility dropuser
Postgres offre un'utilità client per rimuovere un utente senza connettersi all'interfaccia della riga di comando di PSQL.
Per eliminare un utente in Postgres con dropuser
, esegui il seguente comando nel terminale:
sudo -u postgres dropuser <user> -e

In alternativa, suddividi il comando in due passaggi:
1. Passa a postgres utente (o un altro utente con i privilegi corretti):
sudo su - postgres
2. Esegui il comando dropuser:
dropuser <name> -e

In entrambi i casi, Postgres rimuove l'utente.
Metodo 2:eliminare un utente Postgres con la dichiarazione DROP USER
Un altro modo per eliminare un utente da un database Postgres è utilizzare un'istruzione PSQL.
Per eliminare un utente, procedi nel seguente modo:
1. Collegarsi al client PSQL tramite terminale con il seguente comando:
sudo -u postgres psql

Il terminale passa alla console PSQL (postgres=#
).
2. Elenca tutti gli utenti e i ruoli con:
\du

Individua l'utente da rimuovere e utilizza il nome nel passaggio successivo.
3. Eseguire la query seguente per eliminare un utente:
DROP USER <name>;

In alternativa, per verificare se esiste un utente prima di eliminarlo, inserisci:
DROP USER IF EXISTS <name>;

Il client notifica se il ruolo è inesistente.
4. Visualizza di nuovo l'elenco degli utenti per confermare che l'utente è andato:
\du

L'utente non è più nell'elenco dei ruoli. Questo output indica un'eliminazione riuscita.
Elimina più utenti Postgres
Il client PSQL consente di eliminare più di un utente Postgres contemporaneamente. Le istruzioni seguenti spiegano come connettersi al client PostgreSQL ed eliminare più utenti.
1. Connettiti al client PSQL con:
sudo -u postgres psql
2. Elenca tutti gli utenti con:
\du
Individua gli utenti da eliminare e utilizza i nomi nel passaggio successivo.
3. Elimina più utenti Postgres separando i singoli utenti con una virgola:
DROP USER [IF EXISTS] <name>, <name>, ... <name>;

Il comando rimuove più ruoli contemporaneamente. Aggiungi IF EXISTS
per saltare gli utenti che non sono disponibili.
4. Ricontrolla l'elenco utenti per confermare che tutti i ruoli sono stati eliminati:
\du
Gli utenti rimossi non sono più nell'elenco.
Elimina un utente Postgres con dipendenze
Il tentativo di rimuovere un utente Postgres con dipendenze non riesce e mostra un errore.

Per rimuovere in sicurezza l'utente, procedi come segue:
1. Assegnare la proprietà dell'oggetto dai dettagli dell'errore a un altro utente. Ad esempio, per trasferire gli oggetti di proprietà di mioutente a postgres , esegui:
REASSIGN OWNED BY myuser TO postgres;

La query cambia la proprietà dell'oggetto in postgres utente.
2. Rimuovere le connessioni dell'oggetto database all'utente con:
DROP OWNED BY myuser;

Questo passaggio rimuove anche tutti i privilegi che l'utente ha sull'oggetto.
3. Al momento, l'utente non ha più dipendenze. Per eliminare l'utente, esegui:
DROP USER myuser;

Poiché non esistono dipendenze, la rimozione ha esito positivo.
Elimina un ruolo Postgres
Per eliminare un ruolo Postgres, esegui il seguente comando nel client PSQL:
DROP ROLE [IF EXISTS] <name>;
Il DROP USER
statement è un alias per DROP ROLE
. Gli utenti di Postgres sono ruoli con LOGIN
permessi. Pertanto, entrambi DROP USER
e DROP ROLE
sono intercambiabili e funzionano sia per utenti che per ruoli.