Poniżej zamieszczam zapytania dotyczące sesji użytkowników, ich aktywności i kończenia ich pracy. Jeżeli mowa o samych użytkownikach bazodanowych, to zobaczyć ich możemy w tabeli pg_roles. W moim przypadku jest tylko jeden użytkownik, ale w Waszej bazie danych może być ich znacznie więcej. Jak widzimy użytkownicy mają przypisane role (uprawnienia). W postgres'ie mamy także dziedziczenie ról po danych użytownikach, ale to jest temat na osobny artykuł, tak więc o tym kiedy indziej.
SELECT * from pg_roles ; rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolconfig | oid ----------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------+-----------+----- postgres | t | t | t | t | t | t | t | -1 | ******** | | | 10 (1 wiersz)
Sprawdzenie podłączonych do bazy użytkowników
SELECT datname, usename, client_addr, client_port FROM pg_stat_activity; datname | usename | client_addr | client_port ----------+----------+-------------+------------- postgres | postgres | | -1 (1 wiersz)
Ubijanie sesji użytkowników - wykonujemy przy pomocy funkcji pg_terminate_backend(pid). W przypadku użytkowników z innymi rolami musimu posiadać uprawnienia superusera
SELECT *, pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename='username';
W powyższym przykładzie można ukrócić ilość wyświetlanych kolum, ja akurat dla przykładu wziąłem wszystkie z tabeli pg_stat_activity. W miejsce username wstawiamy odpowiedniego użytkownika.