数据库和对象特权
db2数据库特权大体上分成两类:数据库级特权(针对数据库中的所有对象)和对象级特权(与特定的对象相关联)。
用户可以拥有的数据库级特权有:
CREATETAB: 用户可以在数据库中创建表。
BINDADD: 用户可以使用 BIND 命令在数据库中创建包。
CONNECT: 用户可以连接数据库。
CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。
IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。
LOAD: 用户可以将数据装载进表中。
QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。
CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。
数据库对象 包括表、视图、索引、模式和包。幸运的是,大多数对象级特权的意义无需解释。下表总结了这些特权。
特权名称 相关对象 描述 CONTROL 表、视图、索引、包、别名、不同的类型、用户定义函数、序列 提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。 DELETE 表、视图 允许用户从对象中删除记录。 INSERT 表、视图 允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。 SELECT 表、视图 提供使用选择语句来查看对象内容的能力。 UPDATE 表、视图 允许用户使用更新语句修改对象中的记录。 ALTER 表 允许用户使用更改语句更改对象定义。 INDEX 表 允许用户使用创建索引语句在对象上创建索引。 REFERENCES 表 提供在对象上创建或删除外键约束的能力。 BIND 包 允许用户重新绑定现有的包。 EXECUTE 包、过程、函数、方法 允许用户执行包和例程。 ALTERIN 模式 允许用户修改模式中的对象定义。 CREATEIN 模式 允许用户在模式中创建对象。 DROPIN 模式 允许用户删除模式中的对象。
关于对象级特权的信息存储在系统编目视图中。视图名称是 syscat.tabauth、syscat.colauth、syscat.indexauth、syscat.schemaauth、syscat.routineauth 和 syscat.packageauth。
显式特权
可以使用 GRANT 和 REVOKE 命令显式地 对用户或组授予或撤消特权。我们来看看如何在各种对象上使用这些命令。
作为拥有 Administrator 权限的用户登录 Windows,打开两个 DB2 命令窗口。在这两个窗口中,确保将 db2instance 变量设置为 DB2!
在第一个窗口中发出以下命»:
db2 connect to sample
现在,在第二个窗口中发出以下命令:
db2 connect to sample user test1 using password
请记住,第一个窗口中的命令是由一个拥有 SYSADM 权限的用户发出的。第二个窗口中的命令是由 tst1 发出的,这个用户对示例数据库没有特殊的权限或特权。注意,与示例数据库中的表相关联的模式名是发出 db2sampl 命令的用户的名称。在这些示例中,这个用户是 GMILNE。