W jaki sposób można połączyć aktywnych użytkowników z bazą danych PostgreSQL za pośrednictwem SQL? Może to być identyfikator użytkownika lub liczba użytkowników.
W jaki sposób można połączyć aktywnych użytkowników z bazą danych PostgreSQL za pośrednictwem SQL? Może to być identyfikator użytkownika lub liczba użytkowników.
Odpowiedzi:
(pytanie) Nie dostajesz tych informacji
wybierz * z pg_user ;
lub używając widoku pg_stat_activity :
select * from pg_stat_activity;
Dodany:
widok mówi:
Jeden wiersz na proces serwera, pokazujący identyfikator OID bazy danych, nazwę bazy danych, identyfikator procesu, identyfikator OID użytkownika, nazwę użytkownika , bieżące zapytanie, stan oczekiwania zapytania, czas rozpoczęcia wykonywania bieżącego zapytania, godzinę rozpoczęcia procesu oraz adres klienta i numer portu . Kolumny zawierające dane dotyczące bieżącego zapytania są dostępne, chyba że parametr stats_command_string został wyłączony. Ponadto kolumny te są widoczne tylko wtedy, gdy użytkownik przeglądający widok jest superużytkownikiem lub to ten sam użytkownik, który jest właścicielem procesu, którego dotyczy raport.
nie możesz filtrować i uzyskiwać tych informacji? to będą obecni użytkownicy w Bazie Danych, możesz użyć czasu rozpoczęcia wykonywania, aby uzyskać na przykład wszystkie zapytania z ostatnich 5 minut ...
coś w tym stylu.
Korzystanie z informacji Balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
do powyższego zapytania, aby uzyskać adres IP klienta.
OP zapytał użytkowników podłączonych do określonej bazy danych :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Daje ci to wszelkiego rodzaju soczyste informacje (jak wspominali inni), takie jak
usesysid
)usename
)appname
), jeśli ustawienie tej zmiennej przeszkadza - psql
robi :-)client_addr
)query
)