2

我想进一步查看列出的 PID,pg_stat_activity以了解他们最后一次成功调用将会话SET SESSION AUTHORIZATION授权设置为什么。在 PostgreSQL 9.0 上我需要哪个表或视图?

4

1 回答 1

2

PostgreSQL 不会公开这些信息,至少在 9.4 或任何之前的版本中是这样。

里面的用户idpg_stat_activity是登录用户;它是RESET SESSION AUTHORIZATION返回的用户。SET SESSION AUTHORIZATION当你或时它不会改变SET ROLE

有关当前有效会话授权和当前角色的信息在后端内部。您可以使用SELECT current_user, current_role等在本地将它们访问到后端,但是没有进程间的方式来获取它们。

pg_stat_activity如果可以添加它而不会增加维护或查询它的成本,那么拥有它可能会很好。不过,您需要深入了解 PostgreSQL 并开发一个补丁来公开信息。

令人惊讶的是,log_line_prefix似乎没有包含格式符号来显示有效角色和有效会话用户。鉴于 PgBouncer 使用会话授权,这很奇怪,我觉得我一定错过了一些东西。

在任何情况下,我认为这样做的唯一方法是挖掘日志、记录 pid 和会话 ID,然后将成功SET SESSION AUTHORIZATION的调用与后续语句相关联。

于 2013-12-14T03:51:05.623 回答