Как проверить разрешения для функций в консоли PSQL - PullRequest
4 голосов
/ 11 июня 2010

Не могли бы вы рассказать мне, как проверить права доступа к функциям с помощью консоли psql, но без необходимости загружать исходный код и описание (как при использовании \ df +).

Ответы [ 2 ]

3 голосов
/ 19 августа 2015

Для более простого запроса используйте:

SELECT proacl FROM pg_proc WHERE proname='FUNCTION-NAME';

Результат похож на:

                           proacl                       
----------------------------------------------------
 {=X/postgres,postgres=X/postgres,test1=X/postgres}
(1 row)

, который показывает, что test1 пользователь также имеет доступ к этой функции.

Подробнее см. Обсуждение в списке рассылки psql: psql отсутствует функция: показать разрешения для функций .

1 голос
/ 11 июня 2010

Вы можете запросить системные таблицы:

SELECT proname, rolname
  FROM pg_proc pr,
       pg_type tp,
       pg_authid id
 WHERE proowner = id.oid
   AND tp.oid = pr.prorettype
   AND pr.proisagg = FALSE
   AND tp.typname <> 'trigger'
   AND pr.pronamespace IN (
       SELECT oid
         FROM pg_namespace
        WHERE nspname NOT LIKE 'pg_%'
          AND nspname != 'information_schema'
);
...