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