¿Cómo se puede conectar a los usuarios activos a una base de datos postgreSQL a través de SQL? Este podría ser el ID de usuario o el número de usuarios.
¿Cómo se puede conectar a los usuarios activos a una base de datos postgreSQL a través de SQL? Este podría ser el ID de usuario o el número de usuarios.
Respuestas:
(pregunta) ¿No recibes esa información en
seleccione * de pg_user ;
o usando la vista pg_stat_activity :
select * from pg_stat_activity;
Adicional:
la vista dice:
Una fila por proceso de servidor, que muestra el OID de la base de datos, el nombre de la base de datos, el ID del proceso, el OID del usuario, el nombre del usuario , la consulta actual, el estado de espera de la consulta, la hora a la que se inició la ejecución de la consulta actual, la hora a la que se inició el proceso y la dirección del cliente y número de puerto . Las columnas que informan datos sobre la consulta actual están disponibles a menos que se haya desactivado el parámetro stats_command_string. Además, estas columnas solo son visibles si el usuario que examina la vista es un superusuario o el mismo usuario que posee el proceso sobre el que se informa.
¿No puedes filtrar y obtener esa información? que serán los usuarios actuales en la base de datos, puede usar el tiempo de ejecución inicial para obtener todas las consultas de los últimos 5 minutos, por ejemplo ...
algo como eso.
Usando la información de balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
a la consulta anterior para obtener la IP del cliente.
OP solicitó usuarios conectados a una base de datos en particular :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Esto le brinda todo tipo de información jugosa (como otros han mencionado) como
usesysid
)usename
)appname
), si se molesta en establecer esa variable, lo psql
hace :-)client_addr
)query
)