На данный момент нет права предоставлять, это жестко запрограммировано для суперпользователя. Это обсуждалось в списке рассылки в последнее время и может измениться в 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
вам права , следует предоставлять их только определенному пользователю или роли, которая должна выполнять роль суррогатного пользователя для мониторинга.