En este punto, no hay derecho a otorgar, está codificado como superusuario. Eso se ha discutido en la lista de correo últimamente, y puede cambiar en 9.5 si alguien encuentra el tiempo para trabajar en ello.
Como solución alternativa, puede crear una SECURITY DEFINER
función que sea propiedad del superusuario y ejecute la consulta que desee. Esto permitirá a los no superusuarios ver el contenido pg_stat_activity
llamando a la función.
Por ejemplo, ejecutar como superusuario:
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;
Tenga en cuenta que el acceso gratuito a pg_stat_activity
está restringido por una razón. Es posible espiar información confidencial de las consultas de otras personas; imagine, por ejemplo, si otro usuario estaba usando pgcrypto. En lugar de otorgarle derechos public
, debe otorgarlos solo a un usuario o rol específico que actuará como usuario sustituto para el monitoreo.