AWS RDS: как предоставить SELECT PG_BUFFERCACHE не-aws-суперпользователю - PullRequest
0 голосов
/ 25 февраля 2019

После установки расширения https://www.postgresql.org/docs/9.1/pgbuffercache.html я хочу получить доступ к представлению pg_buffercache от другого пользователя, не являющегося суперпользователем.

GRANT EXECUTE ON FUNCTION pg_buffercache_pages() TO test_monitoring;
GRANT SELECT ON pg_buffercache TO test_monitoring;

не работает

Согласно https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html роль RDS_SUPERUSER имеет разрешения для «ВЫПОЛНИТЬ PG_BUFFERCACHE_PAGES (), ВЫБРАТЬ PG_BUFFERCACHE»

Возможно ли предоставить то же самое другой роли?

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете создать функцию и представление как rds_superuser для этого:

CREATE FUNCTION buffercache_for_all()
   RETURNS TABLE (
      bufferid integer,
      relfilenode oid,
      reltablespace oid,
      reldatabase oid,
      relforknumber smallint,
      relblocknumber bigint,
      isdirty boolean,
      usagecount smallint,
      pinning_backends integer
   ) LANGUAGE sql SECURITY DEFINER SET search_path = pg_catalog AS
'SELECT p.bufferid,
       p.relfilenode,
       p.reltablespace,
       p.reldatabase,
       p.relforknumber,
       p.relblocknumber,
       p.isdirty,
       p.usagecount,
       p.pinning_backends
FROM public.pg_buffercache_pages() AS p(
        bufferid integer,
        relfilenode oid,
        reltablespace oid,
        reldatabase oid,
        relforknumber smallint,
        relblocknumber bigint,
        isdirty boolean,
        usagecount smallint,
        pinning_backends integer
     )';

CREATE VIEW buffercache_for_all AS SELECT * FROM buffercache_for_all();

Затем предоставьте EXECUTE для функции и SELECT для представления тому, кому разрешено видетьинформация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...