В какой системной таблице postgres хранится карта идентификаторов PID для авторизации сеансов?

Я хочу посмотреть в PID, перечисленных в pg_stat_activity знать, к чему их последний успешный призыв SET SESSION AUTHORIZATION установите их авторизацию сеанса в. Какая таблица или представление мне нужно на PostgreSQL 9.0?

1 ответ

Решение

PostgreSQL не предоставляет эту информацию, по крайней мере, в 9.4 или в любой предыдущей версии.

Идентификатор пользователя в pg_stat_activity логин пользователя; это пользователь, который RESET SESSION AUTHORIZATION восходит к. Это не изменится, когда вы SET SESSION AUTHORIZATION или же SET ROLE,

Информация о текущей действующей авторизации сеанса и текущей роли является внутренней для серверной части. Вы можете получить к ним доступ локально к бэкэнду с SELECT current_user, current_role и т. д., но нет никакого межпроцессного способа добраться до них.

Было бы неплохо иметь это, если бы его можно было добавить, не делая его более дорогим в обслуживании pg_stat_activity или запросить его. Однако вам нужно разобраться с внутренностями PostgreSQL и разработать патч для раскрытия информации.

Удивительно, log_line_prefix кажется, не включает символы формата, чтобы показать эффективную роль и эффективного пользователя сеанса. Учитывая использование авторизации сессии PgBouncer, это довольно странно, что я чувствую, что, должно быть, что-то пропустил.

В любом случае, единственный способ сделать это - просмотреть журналы, записать pid и идентификатор сеанса, а затем успешно установить связь. SET SESSION AUTHORIZATION звонки с последующими заявлениями.

Другие вопросы по тегам