查看为对象授予的权限
您可以通过查询以下系统表来查看有关权限、授予者、被授予者和对象的信息:
附加到权限后面的星号 (*) 表示用户可以将该权限授予其他用户。
您还可以使用 GET_PRIVILEGES_DESCRIPTION 元函数查看指定数据库对象的有效权限。
查看显式授予的权限
若要查看显式授予的对象权限,请查询 GRANTS 表。
以下查询返回 myschema 架构的显式权限。
=> SELECT grantee, privileges_description FROM grants WHERE object_name='myschema';
grantee | privileges_description
---------+------------------------
Bob | USAGE, CREATE
Alice | CREATE
(2 rows)
查看继承的权限
若要查看哪些表和视图从哪些架构继承权限,请查询 INHERITING_OBJECTS 表。
以下查询返回从其父架构(客户)继承权限的表和视图。
=> SELECT * FROM inheriting_objects WHERE object_schema='customers';
object_id | schema_id | object_schema | object_name | object_type
-------------------+-------------------+---------------+---------------+-------------
45035996273980908 | 45035996273980902 | customers | cust_info | table
45035996273980984 | 45035996273980902 | customers | shipping_info | table
45035996273980980 | 45035996273980902 | customers | cust_set | view
(3 rows)
若要查看表和视图继承的特定权限及其关联的授予语句的信息,请查询 INHERITED_PRIVILEGES 表。
以下查询返回表和视图从其父架构(客户)继承的权限。
=> SELECT object_schema,object_name,object_type,privileges_description,principal,grantor FROM inherited_privileges WHERE object_schema='customers';
object_schema | object_name | object_type | privileges_description | principal | grantor
---------------+---------------+-------------+---------------------------------------------------------------------------+-----------+---------
customers | cust_info | Table | INSERT*, SELECT*, UPDATE*, DELETE*, ALTER*, REFERENCES*, DROP*, TRUNCATE* | dbadmin | dbadmin
customers | shipping_info | Table | INSERT*, SELECT*, UPDATE*, DELETE*, ALTER*, REFERENCES*, DROP*, TRUNCATE* | dbadmin | dbadmin
customers | cust_set | View | SELECT*, ALTER*, DROP* | dbadmin | dbadmin
customers | cust_info | Table | SELECT | Val | dbadmin
customers | shipping_info | Table | SELECT | Val | dbadmin
customers | cust_set | View | SELECT | Val | dbadmin
customers | cust_info | Table | INSERT | Pooja | dbadmin
customers | shipping_info | Table | INSERT | Pooja | dbadmin
(8 rows)
查看对象的有效权限
若要查看当前用户对指定数据库对象的有效权限,请使用 GET_PRIVILEGES_DESCRIPTION 元函数。
在以下示例中,用户 Glenn 设置了 REPORTER 角色,并希望检查他对架构 s1
和表 s1.articles
的有效权限。
-
表
s1.articles
从其架构 (s1
) 继承权限。 -
REPORTER 角色具有以下权限:
-
对架构的 SELECT 权限
s1
-
对表的 INSERT WITH GRANT OPTION 权限
s1.articles
-
-
用户 Glenn 具有以下权限:
-
对架构
s1
的 UPDATE 和 USAGE 权限。 -
对表
s1.articles
的 DELETE 权限。
-
GET_PRIVILEGES_DESCRIPTION 返回 Glenn 对架构 s1
的以下有效权限:
=> SELECT GET_PRIVILEGES_DESCRIPTION('schema', 's1');
GET_PRIVILEGES_DESCRIPTION
--------------------------------
SELECT, UPDATE, USAGE
(1 row)
GET_PRIVILEGES_DESCRIPTION 返回 Glenn 对表 s1.articles
的以下有效权限:
=> SELECT GET_PRIVILEGES_DESCRIPTION('table', 's1.articles');
GET_PRIVILEGES_DESCRIPTION
--------------------------------
INSERT*, SELECT, UPDATE, DELETE
(1 row)