Da qualsiasi DB del cluster:
Catch 22:devi prima essere connesso a un database. Forse puoi connetterti come un altro utente? (Per impostazione predefinita, alcune connessioni sono riservate ai superutenti con superuser_reserved_connections
impostazione.)
Per ottenere informazioni dettagliate per ogni connessione da parte di questo utente:
SELECT *
FROM pg_stat_activity
WHERE usename = 'user_name';
Come stesso utente oppure come superutente puoi cancellare tutte le (altre) connessioni di un utente:
SELECT pg_cancel_backend(pid) -- (SIGINT)
-- pg_terminate_backend(pid) -- the less patient alternative (SIGTERM)
FROM pg_stat_activity
WHERE usename = 'user_name'
AND pid <> pg_backend_pid();
Meglio essere sicuri che sia giusto farlo. Non vuoi terminare query (o connessioni) importanti in questo modo.
pg_cancel_backend()
e pg_terminate_backend()
nel manuale.
Da una shell Linux
Hai avviato tu stesso quelle altre connessioni? Forse un tuo copione sospeso? Dovresti essere in grado di ucciderli (se sei sicuro che sia possibile farlo).
Puoi indagare con ps
quali processi potrebbero essere in errore:
ps -aux
ps -aux | grep psql
Se identifichi un processo da uccidere (meglio essere sicuri, non voglio uccidere il server):
kill 123457689 # pid of process here.
Oppure con SIGKILL
invece di SIGTERM
:
kill -9 123457689