《db2权限管理文斌整理》由会员分享,可在线阅读,更多相关《db2权限管理文斌整理(16页珍藏版)》请在金锄头文库上搜索。
1、db2 创建用户及授权1、创建系统用户 dbuser/ehong 隶属于 db2users 2、C:Program FilesIBMSQLLIBBINdb2 connect to AKZXTEST数据库连接信息数据库服务器 = DB2/NT 9.7.3SQL 授权标识 = ADMINIST.本地数据库别名 = AKZXTEST3、给用户授权授予连接权限C:Program FilesIBMSQLLIBBINdb2 grant connect on database to user dbuserDB20000I SQL 命令成功完成。 这里可以授予的数据库级特权有:CREATETAB: 用户可以在
2、数据库中创建表。 BINDADD: 用户可以使用 BIND 命令在数据库中创建包。 CONNECT: 用户可以连接数据库。 CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。 IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。 LOAD: 用户可以将数据装载进表中。 QUIESCE_CONNECT: 用户可以访问处于静默 (quiesced)状态的数据库。 CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。secadm:安全性管理员D
3、badm:DBADM 用户对一个数据库有几乎完全的控制能力。DBADM 用户不能执行某些维护或管理任务4、测试连接C:Program FilesIBMSQLLIBBINdb2 connect to AKZXTEST user dbuser using ehong数据库连接信息 数据库服务器 = DB2/NT 9.7.3SQL 授权标识 = DBUSER本地数据库别名 = AKZXTEST#db2 数据库特权大体上分成两类:数据库级特权(针对数据库中的所有对象 )和对象级特权(与特定的对象相关联) 。1、DBADM用户对一个数据库有几乎完全的控制能力。DBADM 用户不能执行某些维护或管理任务,
4、比如:* drop database* drop/create tablespace* backup/restore database* update db cfg for database db name 但是,他们可以执行以下任务:* db2 create/drop table* db2 grant/revoke(任何特权)* db2 runstats(任何表) DBADM 用户还被自动地授予对数据库对象及其内容的所有特权。因为 DBADM 权限是一个数据库级权限,所以它可以被分配给用户和用户组。以下命令演示授予 DBADM 权限的不同方法。* db2 create database te
5、st这个命令将数据库 test 上的 DBADM 权限隐式地授予发出此命令的用户。* db2 connect to sampledb2 grant dbadm on database to user tst1这个命令只能由 SYSADM 用户发出;它向用户 tst1 授予示例数据库上的 DBADM 权限。注意,在授予 DBADM 权限之前,发出这个命令的用户必须连接到示例数据库。* db2 grant dbadm on database to group db2grp1这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。2、 LOA
6、D 权限LOAD 权限是一个数据库级权限,所以它可以被分配给用户和用户组。顾名思义,LOAD权限允许用户对表发出 LOAD 命令。当用大量数据填充表时,LOAD 命令通常用来替代插入或导入命令,它的速度更快。根据您希望执行的 LOAD 操作类型,仅仅拥有 LOAD权限可能还不够。可能还需要表上的特定特权。拥有 LOAD 权限的用户可以运行以下命令:* db2 quiesce tablespaces for table* db2 list tablespaces* db2 runstats(任何表)* db2 load insert(必须有表上的插入特权)* db2 load restart/t
7、erminate after load insert(必须有表上的插入特权)* db2 load replace(必须有表上的插入和删除特权)* db2 load restart/terminate after load replace(必须有表上的插入和删除特权) 只有拥有 SYSADM 或 DBADM 权限的用户能够对用户或用户组授予或撤消 LOAD 权限。以下示例演示 LOAD 权限如何允许我们的用户使用 LOAD 命令将数据装载进 sales 表中。假设已经发出了命令 db2 connect to sample。* db2 grant load on database to user
8、tst1db2 grant insert on table sales to user tst1有了 LOAD 权限和插入特权,tst1 就可以对 sales 表发出 LOAD INSERT 或LOAD RESTART,或者在 LOAD INSERT 之后发出 TERMINATE。* db2 grant load on database to group grp1db2 grant delete on table sales to group grp1db2 grant insert on table sales to group grp1有了 LOAD 权限以及删除和插入特权,grp1 的任
9、何成员就可以对 sales 表发出LOAD REPLACE 或 LOAD RESTART,或者在 LOAD REPLACE 之后发出TERMINATE。 3.其他特权用户可以拥有的数据库级特权有:* CREATETAB: 用户可以在数据库中创建表。* BINDADD: 用户可以使用 BIND 命令在数据库中创建包。* CONNECT: 用户可以连接数据库。* CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。* IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用CREATE SCHEMA 命令。* LOAD: 用户可以将
10、数据装载进表中。* QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。* CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。 数据库对象 包括表、视图、索引、模式和包。幸运的是,大多数对象级特权的意义无需解释。下表总结了这些特权。特权名称 相关对象 描述CONTROL 表、视图、索引、包、别名、不同的类型、用户定义函数、序列 提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。DELETE 表、视图 允许用户从对象中删除记录。INSERT 表、视图 允许用户通过 INSERT
11、或 IMPORT 命令将记录插入对象中。SELECT 表、视图 提供使用选择语句来查看对象内容的能力。UPDATE 表、视图 允许用户使用更新语句修改对象中的记录。ALTER 表 允许用户使用更改语句更改对象定义。INDEX 表 允许用户使用创建索引语句在对象上创建索引。REFERENCES 表 提供在对象上创建或删除外键约束的能力。BIND 包 允许用户重新绑定现有的包。EXECUTE 包、过程、函数、方法 允许用户执行包和例程。ALTERIN 模式 允许用户修改模式中的对象定义。CREATEIN 模式 允许用户在模式中创建对象。DROPIN 模式 允许用户删除模式中的对象。关于对象级特权的
12、信息存储在系统编目视图中。视图名称是syscat.tabauth、syscat.colauth、syscat.indexauth、syscat.schemaauth、syscat.routineauth 和 syscat.packageauth。显式特权可以使用 GRANT 和 REVOKE 命令显式地 对用户或组授予或撤消特权。我们来看看如何在各种对象上使用这些命令。作为拥有 Administrator 权限的用户登录 Windows,打开两个 DB2 命令窗口。在这两个窗口中,确保将 db2instance 变量设置为 DB2!在第一个窗口中发出以下命:db2 connect to sam
13、ple现在,在第二个窗口中发出以下命令:db2 connect to sample user test1 using password请记住,第一个窗口中的命令是由一个拥有 SYSADM 权限的用户发出的。第二个窗口中的命令是由 tst1 发出的,这个用户对示例数据库没有特殊的权限或特权。注意,与示例数据库中的表相关联的模式名是发出 db2sampl 命令的用户的名称。在这些示例中,这个用户是 GMILNE。现在,在第二个窗口中发出以下命令:db2 select * from gmilne.org应该会看到以下响应:SQL0551N TEST1 does not have the privil
14、ege to perform operation SELECT on object GMILNE.ORG.为了纠正这种状况,在第一个窗口中发出以下命令:db2 grant select on table gmilne.org to user test1现在,前面的命令就会成功!接下来,在第二个窗口中发出一个更复杂的命令:db2 insert into gmilne.org values (100, Tutorial, 1, Eastern, Toronto)同样会看到错误消息:SQL0551N TEST1 does not have the privilege to perform opera
15、tion INSERT on object GMILNE.ORG所以,在第一个窗口中输入以下命令:db2 grant insert on table gmilne.org to group db2grp1原来失败的 INSERT 命令现在应该会成功完成,因为 test1 是 db2grp1 组的成员。现在,在第二个窗口中输入以下命令:db2 drop table gmilne.emp_photo同样会看到错误消息:SQL0551N TEST1 does not have the privilege to perform operation DROP TABLEon object GMILNE.
16、EMP_PHOTO.所以,我们要授予这个特权。在第一个窗口中输入以下命令:db2 grant dropin on schema gmilne to allDROP TABLE 命令现在应该会成功完成。既然已经完成了示例,就可以撤消刚才授予的特权。在第一个窗口中发出以下命令:db2 revoke select on table gmilne.org from user test1db2 revoke insert on table gmilne.org from group db2grp1db2 revoke dropin on schema gmilne from all注意,从组中撤消特权不一定会