Tengo una base de datos Postgresql 9.2. Se crean dos usuarios en esta base de datos. Cuando realizo la siguiente consulta como superusuario, puedo ver todo.
select * from pg_stat_activity
Sin embargo, ¿es posible lograr el mismo resultado sin estar conectado como superusuario?
¿Qué privilegio / rol debo otorgar / crear para tener los resultados que un superusuario puede ver?
postgresql
postgresql-9.2
permissions
role
Stephan
fuente
fuente
Respuestas:
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 contenidopg_stat_activity
llamando a la función.Por ejemplo, ejecutar como superusuario:
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 derechospublic
, debe otorgarlos solo a un usuario o rol específico que actuará como usuario sustituto para el monitoreo.fuente
Comenzando con PostgreSQL 10, puede otorgar el rol
pg_read_all_stats
para lograr el resultado deseado.fuente