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.
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.
Réponses:
(question) N'avez-vous pas cette information dans
sélectionnez * dans pg_user ;
ou en utilisant la vue pg_stat_activity :
select * from pg_stat_activity;
Ajoutée:
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 la requête en cours a commencé l'exécution, l'heure à laquelle le processus a été démarré et l'adresse du client et numéro de port . Les colonnes qui rapportent des données sur la requête actuelle sont disponibles à moins que le paramètre stats_command_string n'ait é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 du début pour obtenir toutes les requêtes des 5 dernières minutes par exemple ...
quelque chose comme ca.
Utilisation des informations de balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
à la requête ci-dessus afin d'obtenir l'adresse IP du client.
OP a demandé des 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é) telles que
usesysid
)usename
)appname
), si cela dérange de définir cette variable - psql
fait :-)client_addr
)query
)