Wie können Sie die aktiven Benutzer über SQL mit einer postgreSQL-Datenbank verbinden? Dies kann die Benutzer-ID oder die Anzahl der Benutzer sein.
Wie können Sie die aktiven Benutzer über SQL mit einer postgreSQL-Datenbank verbinden? Dies kann die Benutzer-ID oder die Anzahl der Benutzer sein.
Antworten:
(Frage) Verstehst du diese Informationen nicht?
wähle * aus pg_user ;
oder mit der Ansicht pg_stat_activity :
select * from pg_stat_activity;
Hinzugefügt:
Die Ansicht sagt:
Eine Zeile pro Serverprozess mit Datenbank-OID, Datenbankname, Prozess-ID, Benutzer-OID, Benutzername , aktueller Abfrage, Wartestatus der Abfrage, Zeitpunkt, zu dem die aktuelle Abfrage ausgeführt wurde, Zeitpunkt, zu dem der Prozess gestartet wurde, sowie Adresse und Client-Adresse Portnummer . Die Spalten, die Daten zur aktuellen Abfrage melden, sind verfügbar, sofern der Parameter stats_command_string nicht deaktiviert wurde. Darüber hinaus sind diese Spalten nur sichtbar, wenn der Benutzer, der die Ansicht untersucht, ein Superuser ist oder mit dem Benutzer identisch ist, dem der Prozess gehört, über den berichtet wird.
Können Sie diese Informationen nicht filtern und abrufen? Dies sind die aktuellen Benutzer in der Datenbank. Sie können die Ausführungszeit verwenden, um alle Abfragen der letzten 5 Minuten abzurufen, z.
sowas in der Art.
Verwenden der Informationen von balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
die obige Abfrage ergänzen , um die IP des Clients abzurufen.
OP fragte nach Benutzern, die mit einer bestimmten Datenbank verbunden sind :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Dies bringt Ihnen alle Arten von saftigen Informationen (wie andere erwähnt haben) wie
usesysid
)usename
)appname
), wenn es stört, diese Variable zu setzen - psql
tut :-)client_addr
)query
)