从命令行获取对 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是个好主意。
这些是 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是个好主意。