数据库管理权限 (DBADM)

DBADM 权限是对特定数据库的管理权限。 数据库管理员拥有创建对象和发出数据库命令所需的特权。 DBADM 权限对系统目录表和视图具有 SELECT 特权,并且可以运行所有内置 Db2® 例程 (审计例程和 SET_MAINT_MODE_RECORD_NO_TEMPORALHISTORY 过程除外)。

DBADM 权限只能由安全性管理员(拥有 SECADM 权限)授予或撤销,并且可授予用户、组或角色。 PUBLIC 无法直接或间接获取 DBADM 权限。

对数据库拥有 DBADM 权限允许用户对该数据库执行下列操作:
  • 创建、改变和删除与安全性不相关的数据库对象
  • 读取日志文件
  • 创建、激活和删除事件监视器
  • 查询表空间的状态
  • 更新日志历史记录文件
  • 停顿表空间
  • 使用任何表空间
  • 重新组织表
  • 使用 RUNSTATS 实用程序收集目录统计信息

SQLADM 权限和 WLMADM 权限包含在 DBADM 权限中。 WLMADM 权限还能够授予对工作负载的 USAGE 特权。

利用 DBADM 权限来授予 DATAACCESS 权限

安全性管理员可以指定数据库管理员是否能够访问数据库中的数据。 DATAACCESS 权限是允许对特定数据库中的数据进行访问的权限。 安全性管理员可以使用 GRANT DBADM ON DATABASE 语句的 WITH DATAACCESS 选项来为数据库管理员提供此功能。 如果既未指定 WITH DATAACCESS 选项也未指定 WITHOUT DATAACCESS 选项,那么缺省情况下会授予 DATAACCESS 权限。

要授予不带 DATAACCESS 权限的数据库管理员权限,请在 SQL 语句中使用 GRANT DBADM WITHOUT DATAACCESS。

利用 DBADM 权限来授予 ACCESSCTRL 权限

安全性管理员可以指定数据库管理员是否能够在数据库中授予和撤销特权。 ACCESSCTRL 权限是允许用户在特定数据库中授予和撤销特权以及非管理权限的权限。 安全性管理员可以使用 GRANT DBADM ON DATABASE 语句的 WITH ACCESSCTRL 选项来为数据库管理员提供此功能。 如果既未指定 WITH ACCESSCTRL 选项也未指定 WITHOUT ACCESSCTRL 选项,那么缺省情况下会授予 ACCESSCTRL 权限。

要授予不带 ACCESSCTRL 权限的数据库管理员权限,请在 SQL 语句中使用 GRANT DBADM WITHOUT ACCESSCTRL。

撤销 DBADM 权限

如果安全性管理员已授予包括 DATAACCESS 或 ACCESSCTRL 权限的 DBADM 权限,那么要撤销这些权限,安全性管理员必须显式撤销 DATAACCESS 或 ACCESSCTRL 权限。 例如,当安全性管理员将 DBADM 权限授予用户时:
GRANT DBADM ON DATABASE TO user1

缺省情况下,还会将 DATAACCESS 和 ACCESSCTRL 权限授予 user1。

稍后,安全性管理员从 user1 撤销 DBADM 权限:
REVOKE DBADM ON DATABASE FROM user1

现在,user1 不再拥有 DBADM 权限,但是仍然拥有 DATAACCESS 和 ACCESSCTRL 权限。

要撤销这些仍有的权限,安全性管理员需要显式地对它们进行撤销:
REVOKE ACCESSCTRL, DATAACCESS ON DATABASE FROM user1

DBADM 权限在先前发行版中的差别

Db2 9.7中,已更新授权模型以明确区分系统管理员,数据库管理员和安全性管理员的职责。 作为此增强的一部分,由 DBADM 权限提供的功能已更改。 在 Db2 9.7之前的发行版中, DBADM 权限自动包含访问数据以及授予和撤销数据库特权的能力。 在 Db2 9.7中,这些功能由新权限 DATAACCESS 和 ACCESSCTRL 提供,如前所述。

此外,在 Db2 9.7之前的发行版中,授予 DBADM 权限也会自动授予以下权限:
  • BINDADD
  • CONNECT
  • CREATETAB
  • CREATE_EXTERNAL_ROUTINE
  • CREATE_NOT_FENCED_ROUTINE
  • IMPLICIT_SCHEMA
  • QUIESCE_CONNECT
  • LOAD
Db2 9.7之前,当撤销 DBADM 权限时,不会撤销这些权限。

Db2 9.7中,这些权限现在是 DBADM 权限的一部分。 在 Db2 9.7中撤销 DBADM 权限时,这些权限将丢失。

但是,如果用户在升级到 Db2 9.7时拥有 DBADM 权限,那么如果撤销 DBADM 权限,那么这些权限不会丢失。 如果在 Db2 9.7 中撤销 DBADM 权限,那么仅当用户通过持有在 Db2 9.7中授予的 DBADM 权限来获取这些权限时,用户才会失去这些权限。

注: 在 Db2 11.5.8 安全性特殊构建 29133 的发行版中,除非设置了 DB2_ALTERNATE_AUTHZ_BEHAVIOUR 注册表变量并分别包含值 EXTERNAL_ROUTINE_DBADM 或 NOT_FENCED_ROUTINE_DBADM ,否则 CREATE_EXTERNAL_ROUTINE 和 CREATE_NOT_FENCED_ROUTINE 不再是 DBADM 权限的一部分。