Як можна за допомогою SQL підключити активних користувачів до бази даних postgreSQL? Це може бути ідентифікатор користувача або кількість користувачів.
Як можна за допомогою SQL підключити активних користувачів до бази даних postgreSQL? Це може бути ідентифікатор користувача або кількість користувачів.
Відповіді:
(питання) Чи не отримуєте ви цю інформацію
виберіть * з pg_user ;
або використовуючи вигляд pg_stat_activity :
select * from pg_stat_activity;
Додано:
погляд говорить:
Один рядок на серверний процес, що показує OID бази даних, ім'я бази даних, ідентифікатор процесу, OID користувача, ім'я користувача , поточний запит, стан очікування запиту, час початку поточного запиту, час запуску процесу, адресу клієнта та номер порту . Стовпці, що подають дані про поточний запит, доступні, якщо параметр stats_command_string не вимкнено. Крім того, ці стовпці видно лише в тому випадку, якщо користувач, який перевіряє подання, є суперкористувачем або таким самим користувачем, як власник процесу, про який повідомляється.
Ви не можете відфільтрувати та отримати цю інформацію? які будуть поточними користувачами бази даних, ви можете використовувати час запуску, щоб отримати усі запити за останні 5 хвилин, наприклад ...
щось таке.
Використовуючи інформацію balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
до вищезазначеного запиту, щоб отримати IP-адресу клієнта.
OP попросив користувачів, підключених до певної бази даних :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Це дає вам всіляку соковиту інформацію (як вже згадували інші), таку як
usesysid
)usename
)appname
), якщо це заважає встановити цю змінну - psql
робить :-)client_addr
)query
)