系统目录表中的特权

数据库级别和表级别特权记录在系统目录表中。任何具有 Connect 特权的用户都可以查询系统目录表以确定授予哪些特权以及授予哪些用户。

数据库级别特权和角色记录在 sysusers 系统目录表中,在这个表中,主键是 username 列,usertype 列包含单个字符 C(表示连接)、R(表示资源),或者 D(表示 DBA)指定 username 拥有的最高数据库级别特权,或者 G(如果 username 是某个角色的授权标识)。如果 username 拥有缺省角色,最后一列 defrole 存储缺省角色。(无法将缺省角色或数据库级别特权授予给角色,但角色可以拥有其他访问特权,如表级别特权,且可以将非缺省角色授予给角色。)行中显示 PUBLIC 组所拥有的最高数据库级别特权的 username 是 public。

表级别特权记录在 systabauth 系统目录表中,该表使用包含表号、授权者和被授权者的组合主键。在 tabauth 列中,特权的编码如以下列表所示。
代码
含义
s
无条件的选择
u
update
-
未授权特权
i
insert
d
delete
x
index
a
alter
r
references

连字符表示未授予的特权,因此授予所有特权显示为 su-idxar-u------ 表示只授予 Update 特权。代码字母通常是小写的,但当 GRANT 语句中使用了 WITH GRANT OPTION 关键字时,代码字母是大写的。

当第三个位置中出现星号 (*) 时,表示对该表和被授权者存在一些列级别的特权。特定的特权记录在 syscolauth 中。它的主键是表号、授权者、被授权者和列号的组合。唯一的属性是一个包含三个字母的列表,它显示特权的类型:sur