《db2权限管理系统文斌整理》由会员分享,可在线阅读,更多相关《db2权限管理系统文斌整理(15页珍藏版)》请在金锄头文库上搜索。
1、worddb2 创建用户与授权1、创建系统用户dbuser/ehong隶属于db2users2、C:Program FilesIBMSQLLIBBINdb2 connect to AKZXTEST数据库连接信息数据库服务器SQL 授权标识 = ADMINIST.本地数据库别名 = AKZXTEST3、给用户授权授予连接权限C:Program FilesIBMSQLLIBBINdb2 grantconnecton database to user dbuserDB20000I SQL 命令成功完成。这里可以授予的数据库级特权有:CREATETAB: 用户可以在数据库中创建表。 BINDADD:
2、用户可以使用 BIND 命令在数据库中创建包。 CONNECT: 用户可以连接数据库。 CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。 IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。 LOAD: 用户可以将数据装载进表中。 QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。 CREATE_EXTERNAL_ROUTINE: 用户可以创建供给用程序和数据库的其他用户使用的过程。secadm:安全性管理员Dbadm:DBADM用户对一个数据库有
3、几乎完全的控制能力。DBADM用户不能执行某些维护或管理任务4、测试连接C:Program FilesIBMSQLLIBBINdb2 connect to AKZXTEST user dbuser using ehong数据库连接信息数据库服务器SQL 授权标识 = DBUSER本地数据库别名 = AKZXTEST#db2数据库特权大体上分成两类:数据库级特权(针对数据库中的所有对象)和对象级特权(与特定的对象相关联)。1、DBADM用户对一个数据库有几乎完全的控制能力。DBADM用户不能执行某些维护或管理任务,比如:*dropdatabase*drop/createtablespace*ba
4、ckup/restoredatabase*updatedbcfgfordatabasedbname但是,他们可以执行以下任务:*db2create/droptable*db2grant/revoke任何特权*db2runstats任何表DBADM用户还被自动地授予对数据库对象与其内容的所有特权。因为DBADM权限是一个数据库级权限,所以它可以被分配给用户和用户组。以下命令演示授予DBADM权限的不同方法。*db2createdatabasetest这个命令将数据库test上的DBADM权限隐式地授予发出此命令的用户。*db2connecttosampledb2grantdbadmondatab
5、asetousertst1这个命令只能由SYSADM用户发出;它向用户tst1授予示例数据库上的DBADM权限。注意,在授予DBADM权限之前,发出这个命令的用户必须连接到示例数据库。*db2grantdbadmondatabasetogroupdb2grp1这个命令将DBADM权限授予db2grp1组中的每个用户。同样,只有SYSADM用户能够发出这个命令。2、LOAD权限LOAD权限是一个数据库级权限,所以它可以被分配给用户和用户组。顾名思义,LOAD权限允许用户对表发出LOAD命令。当用大量数据填充表时,LOAD命令通常用来替代插入或导入命令,它的速度更快。根据您希望执行的LOAD操作类
6、型,仅仅拥有LOAD权限可能还不够。可能还需要表上的特定特权。拥有LOAD权限的用户可以运行以下命令:*db2quiescetablespacesfortable*db2listtablespaces*db2runstats任何表*db2loadinsert必须有表上的插入特权*db2loadrestart/terminateafterloadinsert必须有表上的插入特权*db2loadreplace必须有表上的插入和删除特权*db2loadrestart/terminateafterloadreplace必须有表上的插入和删除特权只有拥有SYSADM或DBADM权限的用户能够对用户或用户
7、组授予或撤消LOAD权限。以下示例演示LOAD权限如何允许我们的用户使用LOAD命令将数据装载进sales表中。假设已经发出了命令db2connecttosample。*db2grantloadondatabasetousertst1db2grantinsertontablesalestousertst1有了LOAD权限和插入特权,tst1就可以对sales表发出LOADINSERT或LOADRESTART,或者在LOADINSERT之后发出TERMINATE。*db2grantloadondatabasetogroupgrp1db2grantdeleteontablesalestogroup
8、grp1db2grantinsertontablesalestogroupgrp1有了LOAD权限以与删除和插入特权,grp1的任何成员就可以对sales表发出LOADREPLACE或LOADRESTART,或者在LOADREPLACE之后发出TERMINATE。3.其他特权用户可以拥有的数据库级特权有:*CREATETAB:用户可以在数据库中创建表。*BINDADD:用户可以使用BIND命令在数据库中创建包。*CONNECT:用户可以连接数据库。*CREATE_NOT_FENCED:用户可以创建unfenced用户定义函数UDF。*IMPLICIT_SCHEMA:用户可以在数据库中隐式地创建
9、模式,而不需要使用CREATESCHEMA命令。*LOAD:用户可以将数据装载进表中。*QUIESCE_CONNECT:用户可以访问处于静默quiesced状态的数据库。*CREATE_EXTERNAL_ROUTINE:用户可以创建供给用程序和数据库的其他用户使用的过程。数据库对象包括表、视图、索引、模式和包。幸运的是,大多数对象级特权的意义无需解释。下表总结了这些特权。特权名称相关对象描述CONTROL表、视图、索引、包、别名、不同的类型、用户定义函数、序列提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。DELETE表、视图允许用户从对象中删除记录。INSER
10、T表、视图允许用户通过INSERT或IMPORT命令将记录插入对象中。SELECT表、视图提供使用选择语句来查看对象内容的能力。UPDATE表、视图允许用户使用更新语句修改对象中的记录。ALTER表允许用户使用更改语句更改对象定义。INDEX表允许用户使用创建索引语句在对象上创建索引。REFERENCES表提供在对象上创建或删除外键约束的能力。BIND包允许用户重新绑定现有的包。EXECUTE包、过程、函数、方法允许用户执行包和例程。ALTERIN模式允许用户修改模式中的对象定义。CREATEIN模式允许用户在模式中创建对象。DROPIN模式允许用户删除模式中的对象。关于对象级特权的信息存储在
11、系统编目视图中。视图名称是和syscat.packageauth。显式特权可以使用GRANT和REVOKE命令显式地对用户或组授予或撤消特权。我们来看看如何在各种对象上使用这些命令。作为拥有Administrator权限的用户登录Windows,打开两个DB2命令窗口。在这两个窗口中,确保将db2instance变量设置为DB2!在第一个窗口中发出以下命:db2connecttosample现在,在第二个窗口中发出以下命令:db2connecttosampleusertest1usingpassword请记住,第一个窗口中的命令是由一个拥有SYSADM权限的用户发出的。第二个窗口中的命令是由t
12、st1发出的,这个用户对示例数据库没有特殊的权限或特权。注意,与示例数据库中的表相关联的模式名是发出db2sampl命令的用户的名称。在这些示例中,这个用户是GMILNE。现在,在第二个窗口中发出以下命令:db2select*from应该会看到以下响应:SQL0551NTEST1doesnothavetheprivilegetoperformoperationSELECTonobjectGMILNE.ORG.为了纠正这种状况,在第一个窗口中发出以下命令:db2grantselectontabletousertest1现在,前面的命令就会成功!接下来,在第二个窗口中发出一个更复杂的命令:db2i
13、nsertintovalues(100,Tutorial,1,Eastern,Toronto)同样会看到错误消息:SQL0551NTEST1doesnothavetheprivilegetoperformoperationINSERTonobjectGMILNE.ORG所以,在第一个窗口中输入以下命令:db2grantinsertontabletogroupdb2grp1原来失败的INSERT命令现在应该会成功完成,因为test1是db2grp1组的成员。现在,在第二个窗口中输入以下命令:db2droptable同样会看到错误消息:SQL0551NTEST1doesnothavethepriv
14、ilegetoperformoperationDROPTABLEonobjectGMILNE.EMP_PHOTO.所以,我们要授予这个特权。在第一个窗口中输入以下命令:db2grantdropinonschemagmilnetoallDROPTABLE命令现在应该会成功完成。既然已经完成了示例,就可以撤消刚刚授予的特权。在第一个窗口中发出以下命令:db2revokeselectontablefromusertest1db2revokeinsertontablefromgroupdb2grp1db2revokedropinonschemagmilnefromall注意,从组中撤消特权不一定会从这个组的所有成员撤消它。例如,以下命令可以用来从db2grp1撤消对表的所有特权CONTROL除外:db2revokeallon