PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Tuer une session/connexion postgresql

Vous pouvez utiliser pg_terminate_backend() pour tuer une connexion. Vous devez être superutilisateur pour utiliser cette fonction. Cela fonctionne sur tous les systèmes d'exploitation de la même manière.

SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

Avant d'exécuter cette requête, vous devez RÉVOQUER les privilèges CONNECT pour éviter de nouvelles connexions :

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

Si vous utilisez Postgres 8.4-9.1, utilisez procpid au lieu de pid

SELECT 
    pg_terminate_backend(procpid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    procpid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;