Terminar todas las conexiones que tenga abiertas un usuario en PostgreSQL

Hola a todos el día de hoy escribo este blog como complemento a otro que escribí hace unos días, sin embargo la diferencia con el anterior es que este termina todas las conexiones que tenga un usuario especifico contra todas las bases de datos y adicionalmente esto solamente se hace por consola y con un usuario que tenga permisos de administrador como por ejemplo "Postgres".

Como primer paso se debe saber el nombre exacto del usuario a terminar las sesiones y como paso seguido se ejecuta la siguiente instrucción:

psql -t -c    "alter user <user_name> login;"

Esto evitara que el usuario se puede conectar nuevamente, se debe hacer mientras se matan las sesiones abiertas, luego se ejecuta la siguiente instrucción:

psql -t -c "select ' kill ' || procpid from pg_stat_activity a join pg_roles r on a. usename = r. rolname and not rolcanlogin;"|bash

Una vez ejecutado esto ya se habran terminado todas las conexiones abiertas, pero para que el usuario se pueda volver a conectar a la base de datos se debe ejecutar nuevamente el siguiente comando:

psql -t -c    "alter user <user_name> login;"

Espero que haya sido de utilidad y hasta una próxima oportunidad.

Comentarios