DB2中的权限都能对数据库进行什么样的操作呢?下面就为您介绍DB2权限和操作之间的关系,如果您对DB2权限方面感兴趣的话,不妨一看。
获得 SYSADM
具有 SYSADM 权限的用户可以发出作用于 DB2 实例、实例内的任何数据库以及这些数据库内的任何对象的任何 DB2 命令。他们也能够访问数据库内的数据,授予或撤消特权和权限。SYSADM 用户是唯一被允许更新数据库管理器配置(Database Manager Configuration(DBM CFG))文件的用户。SYSADM 权限在 DBM CFG 中通过 SYSADM_GROUP 参数控制。当创建实例时,在 Windows 上这个参数被设置为 Administrator(尽管当您发出命令 db2 get dbm cfg 时显示为空)。在 UNIX 上,该参数被设置为创建实例的用户的主组。由于 SYSADM 用户是唯一被允许更新 DBM CFG 的用户,所以,他们也是唯一能够将任何 SYS* 权限授予其它组的用户。如下示例说明了如何将 SYSADM 权限授予组“grp1”。
获得 SYSCTRL
具有 SYSCTRL 权限的用户可以执行实例内的所有管理和维护命令。然而,与 SYSADM 用户不同,他们不能访问数据库内的任何数据,除非他们被授予了这样做所需要的特权。SYSCTRL 用户可以对实例内的任何数据库执行
SYSCTRL 由具有 SYSADM 权限的用户使用命令 db2 update dbm cfg using SYSCTRL_GROUP group name 授予一个组。
获得 SYSMAINT
具有 SYSMAINT 权限的用户可以发出的命令是 SYSCTRL 权限被允许的命令的子集 — 就是被看作与“维护”有关的一些任务。
请注意,具有 SYSMAINT 的用户不能创建或删除数据库或表空间(tablespace)。他们也不能访问数据库内的任何数据,除非他们被授予了这样做所需要的特权。
SYSMAINT 由具有 SYSADM 权限的用户使用命令 db2 update dbm cfg using SYSMAINT_GROUP group name 授予一个组。
获得 DBADM
DBADM 权限是一种数据库级权限而不是实例级权限。总的来说,DBADM 用户可以对数据库进行完全控制 — 嗯,大致如此。DBADM 用户不能执行任何维护或管理任务,例如删除数据库、删除/创建表空间、备份/恢复数据库或 update db cfg for database db name 。
DBADM 用户还自动被授予对数据库对象及其内容的所有特权。由于 DBADM 权限是数据库级权限,所以它可以被授予用户和组。以下示例说明如何将 DBADM 权限授给用户“tst1”,这个用户是“grp1”的一个成员。
::::::
db2 create database test
这个命令把对数据库“test”的隐式 DBADM 权限赋予发出此命令的用户。
::::::::
db2 grant dbadm on database to user tst1
这个命令只能由 SYSADM 用户发出。用户将必须连接到拥有该权限的数据库。例如,如果首先发出如下命令,则 DBADM 将被授给 sample 数据库的用户 tst1
:::::::::::::
db2 connec to sample
db2 grant dbadm on database to group grp1
再一次,这个命令也只能由 SYSADM 用户发出。
获得 LOAD
LOAD 权限也被看作数据库级权限,因而可以授予用户和组。这个权限是 DB2 版本 7 的新东西。正如其名称所暗示的,LOAD 权限允许用户对表发出 LOAD 命令。LOAD 命令典型地用来在向表植入大量数据时作为 insert 或 import 命令的更快速的替代命令。取决于您想执行的 LOAD 的类型,仅仅具有 LOAD 权限是不够的。还需要对表的特定特权。
只允许具有 SYSADM 或 DBADM 权限的用户授予或撤消用户或组的 LOAD 权限。