从命令行获取对 views/tables/etc 的 sql 权限

Obtaining sql permissions on views/tables/etc from command line

这些是 ie 的权限。 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 或命令行获得这些授权吗?

您可以从 pg_class 获取 ACL 信息并使用 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;

在漫长的运行中,学习阅读PostgreSQL ACLs是个好主意。