Answers:
在这一点上,没有授予权,它已硬编码给超级用户。最近在邮件列表中对此进行了讨论,如果有人有时间进行修改,可能会在9.5中进行更改。
解决方法是,您可以创建一个SECURITY DEFINER
由超级用户拥有的函数,然后运行所需的查询。这将允许非超级用户pg_stat_activity
通过调用该函数来查看的内容。
例如,以超级用户身份运行:
CREATE FUNCTION get_sa() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;
CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa();
GRANT SELECT ON pg_stat_activity_allusers TO public;
请注意,自由访问pg_stat_activity
受到限制是有原因的。可以从其他人的查询中窥探敏感信息-例如,假设另一个用户正在使用pgcrypto。与其授予权限,public
不应该仅将其授予要充当代理替代用户的特定用户或角色。