DB2数据库权限分为实例级权限(SYSADM、SYSCTRL、SYSMAINT、SYSMON)和DB2数据库级权限(DBAMD、LOAD)。DB2中用户所拥有的权限主要考虑三个方面:实例级、数据库级、数据库操作级别,查看命令是db2getauthorizations。
DB2授权可分为实例级权限授权和数据库级别授权,实例级别权限必须由拥有SYSADM权限的用户通过updatecfg来授予用户组,数据库对象级别权限由DBAMD权限用户通过grant命令显示的授予用户或用户组。
一、DB2权限简介
DB2数据库权限分为实例权限级别(SYSADM、SYSCTRL、SYSMAINT、SYSMON)和DB2数据库权限级别(DBAMD、LOAD)。SYSCTRL、SYSMAINT、SYSMON权限级别的用户不能访问数据linux给用户分配权限,DBAMD、LOAD权限级别的用户可以访问数据。
实例级别权限(只能在用户组级别上进行分配):
SYSADM----系统管理权限(UNIX系统中linux给用户分配权限,SYSADM用户组默认地设置为实例拥有者所在的主用户组,因而,该组中的任何用户都拥有SYSADM权限)
SYSCTL----系统控制权限
SYSMAINT----系统维护权限
数据库级别:
dbadm----数据库管理权限(不能执行例如删掉数据库、创建和删掉表空间、备份或则恢复数据库等等维护性和管理任务)
load----对表进行load操作的权限
1、DB2数据库权限:
CONNECT-容许用户联接数据库
BINDADD-容许用户在数据库中创建新的包
CREATETAB-容许用户在数据库中创建新的表
CREATE_NOT_FENCED-容许用户注册定义为NOTFENCED的用户定义函数(UDF)或储存过程
IMPLICITSCHEMA-容许用户在尚不存在的模式中创建对象(它手动地创建模式)*
QUIESCE_CONNECT-容许用户联接处于quiesced状态的数据库
CREATE_EXTERNAL_ROUTINE-容许用户注册外部解释器(用C和Java等外部语言编撰的解释器)
2、表空间特权:
USE-容许用户在指定的表空间中创建表
3、模式特权:
CREATEIN-容许用户在模式中创建对象
ALTERIN-容许用户在模式中更改对象
DROPIN-容许用户从模式中删掉对象
4、表/视图特权:
CONTROL-授予用户在表和视图上的所有特权,以及将这种特权(不仅CONTROL)授予他人
ALTER-容许用户在表中添加列、在表和它的列上添加或更改注释、添加字段或唯一约束以及创建或删掉表检测约束
DELETE-容许用户从表或视图中删掉行
INDEX-容许用户在表上创建索引
INSERT-容许用户在表或视图中插入数据
REFERENCES-容许用户创建和删掉字段,这须要指定关系中的父表
SELECT-容许用户从表或视图中检索行、在表上创建视图以及运行EXPORT实用程序
UPDATE-容许用户更改表、视图或则表或视图中个别列中的数据;用户可以只在特定列上具有这些特权
5、索引特权:
CONTROL-容许用户删掉索引
6、包特权:
CONTROL-容许用户重新绑定、删除或执行包,以及将这种特权(不仅CONTROL)授予他人
BIND-容许用户重新绑定现有的包
EXECUTE-容许用户执行包
7、例程特权:
EXECUTE容许用户调用类库,从解释器创建函数(只应用于函数),以及在任何DDL句子(例如CREATEVIEW、CREATETRIGGER或定义约束时)中引用解释器
9、序列特权:
USAGE-容许用户对序列使用NEXTVAL和PREVVAL表达式
ALTER-容许用户使用ALTERSEQUENCE句子更改序列属性
特权的信息储存在七个系统编目视图中:
*SYSCAT.DBAUTH-数据库特权
*SYSCAT.COLAUTH-表和视图列特权
*SYSCAT.INDEXAUTH-索引特权
*SYSCAT.PACKAGEAUTH-包特权
*SYSCAT.SCHEMAAUTH-模式特权
*SYSCAT.TABAUTH-表和视图特权
*SYSCAT.TBSPACEAUTH-表空间特权
查看当前联接用户权限:db2getauthorizations
“直接”权限意味着此权限是明晰授予此用户的。“间接”权限意味着此用户属于具有此权限的组。
权限总结:DB2中用户所拥有的权限主要考虑三个方面:实例级、数据库级、数据库对象级别,查看方式是
getauthorizationslinux移植,具体表的授权信息储存在syscat.tabauth中。
二、授权操作
DB2数据库授权由特权组和中级数据库管理程序(实例级)维护和实用操作组成。在DB2可用的5种权限中,SYSADM、SYSCTRL和SYSMAINT是实例级权限。这意味着它们的范围包含实例级命令以及针对这个实例中的所有数据库的命令。这种权限只能分配给组;可以通过DBMCFG文件分配这种权限。
1、获得SYSADM
具有SYSADM权限的用户可以发出作用于DB2实例、实例内的任何数据库以及那些数据库内的任何对象的任何DB2命令。她们也才能访问数据库内的数据,授予或撤销特权和权限。SYSADM用户是惟一被准许更新数据库管理器配置(DatabaseManagerConfiguration(DBMCFG))文件的用户。
SYSADM权限在DBMCFG中通过SYSADM_GROUP参数控制。当创建实例时linux驱动下载,在Windows上这个参数被设置为Administrator(虽然当您发出命令db2getdbmcfg时显示为空)。在UNIX上,该参数被设置为创建实例的用户的主组。因为SYSADM用户是惟一被准许更新DBMCFG的用户,所以,她们也是惟一才能将任何SYS*权限授予其它组的用户。
以下示例演示怎么向db2grp1组授予SYSADM权限:
db2updatedbmcfgusingSYSADM_GROUPdb2grp1
2、获得SYSCTRL
具有SYSCTRL权限的用户可以执行实例内的所有管理和维护命令。但是,与SYSADM用户不同,她们不能访问数据库内的任何数据,除非她们被授予了这样做所须要的特权。SYSCTRL用户可以对实例内的任何数据库执行
拥有SYSADM权限的用户可以使用以下命令将SYSCTRL分配给一个组:
db2updatedbmcfgusingSYSCTRL_GROUPgroupname
3、获得SYSMAINT
具有SYSMAINT权限的用户可以发出的命令是SYSCTRL权限被准许的命令的子集,就是被看作与“维护”有关的一些任务。
请注意,具有SYSMAINT的用户不能创建或删掉数据库或表空间(tablespace)。她们也不能访问数据库内的任何数据,除非她们被授予了这样做所须要的特权。
拥有SYSADM权限的用户可以使用以下命令将SYSMAINT分配给一个组:
db2updatedbmcfgusingSYSMAINT_GROUPgroupname。
4、Grant
DB2数据库授权是通过GRANT命令实现的,DB2数据库授权后,用户才可以对DB2进行相应的操作。针对特定数据库的DBADM和LOAD权限可以分配给用户或用户组。可以使用GRANT命令显式地分配这种权限。
句型:
>>-GRANT--authorization-specification--------------------------->
.-,----------------------.
V|
>--TO----+-authorization-name-+-+--+-------------------+------->