Neste ponto, não há o direito de conceder, é codificado para o superusuário. Isso tem sido discutido recentemente na lista de discussão e pode mudar na versão 9.5 se alguém encontrar tempo para trabalhar nela.
Como solução alternativa, você pode criar uma SECURITY DEFINER
função pertencente ao superusuário e executar a consulta desejada. Isso permitirá que não-usuários vejam o conteúdo pg_stat_activity
chamando a função.
Por exemplo, execute como um superusuário:
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;
Observe que o acesso gratuito a pg_stat_activity
é restrito por um motivo. É possível bisbilhotar informações confidenciais de consultas de outras pessoas - imagine, por exemplo, se outro usuário estivesse usando pgcrypto. Em vez de conceder direitos, public
você deve concedê-los apenas a um usuário ou função específico que deve atuar como um usuário substituto para monitoramento.