Ir al contenido principal

PostgreSQL: Desconectar usuarios de una base de datos

Conocer los usuarios conectados a una base de datos en PostgreSQL

Hola a todos, en algunas ocasiones te ha pasado que tratas de eliminar una base de datos en PostgreSQL pero sale un mensaje que dice que existen usuarios conectados? pues esto te puede servir, para conocer los usuarios conectados a la base de datos ejecutas la siguiente sentencia:

SELECT * FROM pg_stat_activity; 

Con esto verías los usuarios con su respectiva IP y proceso conectados a las bases de datos, para cuando veas que usuarios necesitas cerrarle la conexión solo necesitas verificar el PID que se muestra en la consulta y ejecutar la siguiente sentencia:

SELECT pg_cancel_backend(<pid>); 

Coloca el número del PID reemplazando "<pid>" y con eso ya podrías eliminar la base de datos. Espero que les haya servido y hasta una próxima oportunidad.


Matar sesiones conectadas a una base de datos (PostgreSQL)

Para poder matar las conexiones que existan para una determinada base de datos en PostgreSQL, deberemos combinar la función pg_terminate_backend(pid) para matar la sesión con la tabla pg_stat_activity para obtener los pids de las conexiones a una determinada base de datos

Mediante la tabla pg_stat_activity podemos filtrar por “datname” para obtener todos los pids (columna pid) de las conexiones a dicha base de datos, por lo que si lo combinamos con la función pg_terminate_backend() podremos matar todas las sesiones que usen dicha base de datos. La query sería:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'basededatos';


PostgreSQL: Desconectar usuarios de una base de datos

En el post de hace un par de días, PostgreSQL: Renombrar una base de datos, comentábamos que para poder renombrar una base de datos es necesario que no existan usuarios conectados a la misma.

2. Nos aseguramos de que no existen usuarios conectados a la base de datos. Para ello ejecutamos el siguiente comando (debería mostrar 0 usuarios conectados):

SELECT COUNT(*) AS users_online FROM pg_stat_activity WHERE datname='olddbname';

Pero, ¿qué ocurre si existen conexiones a la base de datos? ¿Cómo desconecto a los usuarios?

La respuesta es:

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname='dbname' AND procpid<>pg_backend_pid();

La condición AND procpid<>pg_backend_pid() evita que nos desconectemos a nosotros mismos si también estamos conectados a la base de datos.

Para finalizar, si lo que quieres es desconectar a todos los usuarios, de todas las bases de datos, puedes ejecutar el comando anterior tantas veces como bases de datos tengas. Sin embargo, como esto puede resultar engorroso si el número de bases de datos es elevado, también puedes programar un pequeño script que automatice el proceso, pero… para qué reinventar la rueda, en el siguiente enlace PostgreSQL Disconnect All Users puedes encontrar un script que te ahorrará tiempo y trabajo.


Tu opinión es importante, por favor, si has llegado hasta aquí, dedica 2 segundos a darme tu opión sobre el blog. Gracias.

Comentarios

  1. Estimado,
    después que desconecto un usuario de esta forma no puedo volver a conectarlo.
    Qué se puede hacer?
    Gracias.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Cuánto pesa un quintal de café

  Qué es el Quintal Cuando de café se trata, probablemente hayas escuchado esta palabra  “Quintal” . El Quintal es una unidad de masa que se utilizaba en la antigüedad. Su etimología deriva del árabe hispano  “quintar” , que a su vez, procede del sirio  “qantira”  y esta última procede del latín  “centenarium” , que significa  “centenario” . De acuerdo a esto, un quintal en el rubro del café equivale a  100 libras  o aproximadamente a  46 kilogramos . A pesar de no ser muy usado en la actualidad, algunas naciones latinoamericanas lo siguen empleando para pesar alimentos al por mayor. Cuánto pesa un Quintal de café Pasando por toda la cadena de producción, es decir, desde el momento de su cosecha hasta el tostado, la cereza del café sufre una serie de transformaciones donde pierde peso. Por lo que el peso de un quintal de cereza de café será diferente al del café tostado. A continuación te mostramos el peso en quintal, del café en cada tr...

ASP.NET Identity 2.1 with ASP.NET Web API 2.2 (Accounts Management) – Part 1

ASP.NET Identity 2.1 with ASP.NET Web API 2.2 (Accounts Management) – Part 1 ASP.NET Identity 2.1 with ASP.NET Web API 2.2 (Accounts Management) – Part 1 ASP.NET Identity 2.1 is the latest membership and identity management framework provided by Microsoft, this membership system can be plugged to any ASP.NET framework such as Web API, MVC, Web Forms, etc… http://bitoftech.net/2015/01/21/asp-net-identity-2-with-asp-net-web-api-2-accounts-management/