DB2 数据库特权授予的方法和技巧(2)

http://www.itjxue.com  2015-08-21 22:26  来源:未知  点击次数: 

  显式特权

  可以使用 GRANT 和 REVOKE 命令显式地 对用户或组授予或撤消特权。我们来看看如何在各种对象上使用这些命令。

  作为拥有 Administrator 权限的用户登录 Windows,打开两个 DB2 命令窗口。在这两个窗口中,确保将 db2instance 变量设置为 DB2!

  在第一个窗口中发出以下命»:

  db2 connect to sample

  现在,在第二个窗口中发出以下命令:

  db2 connect to sample user test1 using password

  请记住,第一个窗口中的命令是由一个拥有 SYSADM 权限的用户发出的。第二个窗口中的命令是由 tst1 发出的,这个用户对示例数据库没有特殊的权限或特权。注意,与示例数据库中的表相关联的模式名是发出 db2sampl 命令的用户的名称。在这些示例中,这个用户是 GMILNE。

  现在,在第二个窗口中发出以下命令: db2 select * from gmilne.org

  应该会看到以下响应:

  SQL0551N "TEST1" does not have the privilege 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 operation "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 TABLE"
  on object "GMILNE.EMP_PHOTO".

  所以,我们要授予这个特权。在第一个窗口中输入以下命令:

  db2 grant dropin on schema gmilne to all

  DROP TABLE 命令现在应该会成功完成。

  既然已经完成了示例,就可以撤消刚才授予的特权。在第一个窗口中发出以下命令:

  db2 revoke select on table gmilne.org from user test1

  db2 revoke insert on table gmilne.org from group db2grp1

  db2 revoke dropin on schema gmilne from all

  注意,从组中撤消特权不一定会从这个组的所有成员撤消它。例如,以下命令可以用来从 db2grp1 撤消对 gmilne.org 表的所有特权(CONTROL 除外): db2 revoke all on table gmilne.org from group db2grp1

  但是,test1 用户(他是 db2grp1 的成员)仍然拥有对这个表的选择特权,因为他或她是被直接授予这个特权的。

(责任编辑:IT教学网)

更多

推荐数据库文章