Получение разрешений sql для представлений / таблиц / и т. Д. Из командной строки - PullRequest
0 голосов
/ 10 сентября 2018

Это разрешения для т.е. my_view просмотр

pwx1=# \dp my_view
                                    Access privileges
  Schema  |      Name       | Type |   Access privileges   | Column privileges | Policies
----------+-----------------+------+-----------------------+-------------------+----------
 schema_x | my_view         | view | user1=arwdDxt/user1  +|                   |
          |                 |      | user2=arwdDxt/user1  +|                   |
          |                 |      | user3=r/user1         |                   |

и я хотел бы получить эти гранты в формате sql:

GRANT SELECT ON TABLE my_view TO user3;

Я могу получить эти гранты, используя pgadmin, но хочу сделать это из psql или командной строки, если это возможно?

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете получить информацию ACL от pg_class и использовать функцию aclexplode для более красивой презентации:

SELECT acl.grantor::regrole AS grantor,
       acl.grantee::regrole AS grantee,
       privilege_type,
       is_grantable
FROM pg_catalog.pg_class AS t
   CROSS JOIN LATERAL aclexplode(t.relacl) AS acl
WHERE t.oid = 'schema_x.my_view'::regclass;

В долгосрочной перспективе, это хорошая идея, чтобы научиться читать ACL PostgreSQL.

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