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

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

Ответ 1

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

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

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

select * from pg_stat_activity;

Добавлено:

в представлении говорится:

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

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

что-то вроде этого.

Ответ 2

Использование информации balexandre:

SELECT usesysid, usename FROM pg_stat_activity;

Ответ 3

ОП запрашивал пользователей, подключенных к определенной базе данных:

-- Who 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)