Как подключить активных пользователей к базе данных postgreSQL через SQL?


87

Как подключить активных пользователей к базе данных postgreSQL через SQL? Это может быть идентификатор пользователя или количество пользователей.

Ответы:


114

(вопрос) Разве вы не получили эту информацию в

выберите * из pg_user ;

или используя представление pg_stat_activity :

select * from pg_stat_activity;

Добавлено:

вид говорит:

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

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

что-то такое.


2
Нет, это список известных пользователей, а не текущий подключенный номер.
Keltia

как насчет сборщика статистики? (перейдите по ссылке в названии представления)
balexandre

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 run ( query)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.