用户权限和角色的系统视图和字典¶
您可以使用系统视图和字典查找有关各种类型的权限和角色授予的信息,如下表所示:
视图和字典 | 描述 |
---|---|
sys_user | 所有用户信息 |
sys_roles | 所有角色信息 |
DBA_TAB_PRISV | 被授权者的所有对象的授权 |
SESSION_USER | 当前会话角色 |
CURRENT_USER | 当前角色 |
sys_sysprivilege | 所有拥有系统ANY权限的用户。 |
user_any_privs | 每个用户只可以查看自己的拥有的ANY权限。 |
另请参阅
了解更多系统表和视图参见《 KingbaseES数据库参考手册 》中的 静态数据词典视图 章节
1. 查询所有的用户和角色的系统授权信息¶
可以使用系统视图sys_user或者sys_roles查询用户被授予的系统特权:
select usename,usesysid,usecreatedb,usesuper,userepl,usebypassrls from sys_user; usename |usesysid |usecreatedb |usesuper |userepl |usebypassrls | --------+---------+------------+---------+--------+-------------+ system |10 |true |true |true |true | sao |9 |false |false |false |false | sso |8 |false |false |false |false | u1 |16603 |true |false |false |false | test |16394 |false |false |false |false | rr |16606 |false |true |false |false | t1 |16604 |false |false |false |false |
2. 查询所有用户和角色的对象授权信息¶
可以使用系统视图DBA_TAB_PRIVS查询用户被授予的表对象的信息:
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'test'; grantee |owner |table_name |grantor |privilege |grantable | --------+-------+-----------+--------+-----------+----------+ test |system |orders |system |SELECT |NO | test |system |orders |system |INSERT |NO | test |system |orders |system |UPDATE |NO | test |system |orders |system |REFERENCES |NO |
3. 查询当前会话的角色信息¶
使用SESSION_USER和CURRENT_USER可以查询到当前用户角色,和当前会话的角色:
SELECT SESSION_USER, CURRENT_USER; session_user |current_user | -------------+-------------+ system |system |