Comment pouvez-vous connecter les utilisateurs actifs à une base de données postgreSQL via SQL? Il peut s'agir de l'ID utilisateur ou du nombre d'utilisateurs.
(question) Ne recevez-vous pas cette information
sélectionnez * parmi pg_user ;
ou en utilisant la vue pg_stat_activity :
select * from pg_stat_activity;
Ajouté:
la vue dit:
Une ligne par processus serveur, indiquant l'OID de la base de données, le nom de la base de données, l'ID du processus, l'OID de l'utilisateur, le nom d'utilisateur , la requête actuelle, l'état d'attente de la requête, l'heure à laquelle l'exécution de la requête en cours, l'heure à laquelle le processus a été lancé et l'adresse et le numéro de port du client . Les colonnes qui rapportent des données sur la requête en cours sont disponibles sauf si le paramètre stats_command_string a été désactivé. De plus, ces colonnes ne sont visibles que si l'utilisateur qui examine la vue est un superutilisateur ou le même que l'utilisateur propriétaire du processus faisant l'objet du rapport.
ne pouvez-vous pas filtrer et obtenir ces informations? ce seront les utilisateurs actuels de la base de données, vous pouvez utiliser le temps d'exécution commencé pour obtenir toutes les requêtes des 5 dernières minutes par exemple ...
quelque chose comme ca.
En utilisant les informations de balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
OP a demandé aux utilisateurs connectés à une base de données particulière :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Cela vous donne toutes sortes d'informations juteuses (comme d'autres l'ont mentionné) comme
usesysid
)usename
)appname
), si cela dérange de définir cette variable - psql
le fait :-)client_addr
)query
)