web-dev-qa-db-fra.com

Comment pouvez-vous connecter les utilisateurs actifs à une base de données postgreSQL via SQL?

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.

78
Johan Bresler

(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.

104
balexandre

En utilisant les informations de balexandre:

SELECT usesysid, usename FROM pg_stat_activity;
38
Sven Lilienthal

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

  • iD utilisateur (colonne usesysid)
  • nom d'utilisateur (usename)
  • nom de l'application client (appname), si cela dérange de définir cette variable - psql le fait :-)
  • Adresse IP (client_addr)
  • dans quel état il se trouve (quelques colonnes liées à l'état et à l'état d'attente)
  • et le favori de tous, la commande SQL en cours d'exécution (query)
0
Tom Hundt