На даний момент права на надання права немає, це жорстко кодується суперпользователю. Про це обговорювали останнім часом у списку розсилки, і він може змінитися в 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слід надавати їх лише конкретному користувачеві або ролі, яка повинна виконувати роль сурогатного користувача для моніторингу.