Як можна за допомогою SQL підключити активних користувачів до бази даних postgreSQL?


87

Як можна за допомогою SQL підключити активних користувачів до бази даних postgreSQL? Це може бути ідентифікатор користувача або кількість користувачів.

Відповіді:


114

(питання) Чи не отримуєте ви цю інформацію

виберіть * з pg_user ;

або використовуючи вигляд pg_stat_activity :

select * from pg_stat_activity;

Додано:

погляд говорить:

Один рядок на серверний процес, що показує OID бази даних, ім'я бази даних, ідентифікатор процесу, OID користувача, ім'я користувача , поточний запит, стан очікування запиту, час початку поточного запиту, час запуску процесу, адресу клієнта та номер порту . Стовпці, що подають дані про поточний запит, доступні, якщо параметр stats_command_string не вимкнено. Крім того, ці стовпці видно лише в тому випадку, якщо користувач, який перевіряє подання, є суперкористувачем або таким самим користувачем, як власник процесу, про який повідомляється.

Ви не можете відфільтрувати та отримати цю інформацію? які будуть поточними користувачами бази даних, ви можете використовувати час запуску, щоб отримати усі запити за останні 5 хвилин, наприклад ...

щось таке.


2
Ні, це список відомих користувачів, а не номер, який наразі підключено.
Keltia

як щодо колектора статистики? (
переходьте

4
@ mm2010: pg_stat_activity: лише для активних користувачів. pg_user: перерахувати всіх користувачів
Хао

4
Відповідь проти, трохи блукає і надає деяку інформацію, яка може ввести в оману майбутніх читачів, наприклад, pg_user не є корисним для пошуку активних користувачів, підключених до бази даних PostgreSQL.
Бред Кох,

40

Використовуючи інформацію balexandre:

SELECT usesysid, usename FROM pg_stat_activity;

2
Ви можете додати client_addrдо вищезазначеного запиту, щоб отримати IP-адресу клієнта.
fagiani

7

OP попросив користувачів, підключених до певної бази даних :

-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity 
  WHERE datname = 'my_great_database';

Це дає вам всіляку соковиту інформацію (як вже згадували інші), таку як

  • ідентифікатор користувача (стовпець usesysid)
  • ім'я користувача ( usename)
  • ім'я клієнтської програми ( appname), якщо це заважає встановити цю змінну - psqlробить :-)
  • IP-адреса ( client_addr)
  • у якому стані він знаходиться (кілька стовпців, пов’язаних із станом та статусом очікування)
  • і всіма улюблені, поточна команда SQL, що виконується ( query)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.