В какой системной таблице 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
звонки с последующими заявлениями.