这部分比较简单,一目了然。
5种不同的权限级别:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD
但我看了,cfg中,还有SYSMON, 可能后面会提到 (获取对数据库系统监视器数据的访问权)
又或者看的版本没更新。
DB2 授权控制数据库安全计划的以下方面:
* 用户被授予的权限级别
* 允许用户运行的命令
* 允许用户读取和/或修改的数据
* 允许用户创建、修改和/或删除的数据库对象
在 DB2 可用的 5 种权限中,
SYSADM、SYSCTRL 和 SYSMAINT 是实例级权限;这些权限只能分配给组;通过 DBM CFG 文件分配权限。
针对特定数据库的 DBADM 和 LOAD 权限可以分配给用户或用户组,使用 GRANT 命令显式地分配这些权限。
用户可以通过发出以下命令来判断自己拥有哪些权限和数据库级特权:
db2 get authorizations
Administrative Authorizations for Current User
Direct SYSADM authority = NO
Direct SYSCTRL authority = NO
Direct SYSMAINT authority = NO
Direct DBADM authority = NO
Direct CREATETAB authority = YES
Direct BINDADD authority = YES
Direct CONNECT authority = YES
Direct CREATE_NOT_FENC authority = YES
Direct IMPLICIT_SCHEMA authority = NO
Direct LOAD authority = NO
Direct QUIESCE_CONNECT authority = NO
Direct CREATE_EXTERNAL_ROUTINE authority = YES
Direct SYSMON authority = NO
Indirect SYSADM authority = NO
Indirect SYSCTRL authority = NO
Indirect SYSMAINT authority = NO
Indirect DBADM authority = NO
Indirect CREATETAB authority = YES
Indirect BINDADD authority = YES
Indirect CONNECT authority = YES
Indirect CREATE_NOT_FENC authority = NO
Indirect IMPLICIT_SCHEMA authority = YES
Indirect LOAD authority = NO
Indirect QUIESCE_CONNECT authority = NO
Indirect CREATE_EXTERNAL_ROUTINE authority = NO
Indirect SYSMON authority = NO
SYSADM 权限
只允许 SYSADM 用户更新 DBM CFG 文件。
SYSADM 权限由DBM CFG文件中的 SYSADM_GROUP 参数控制。
在 Windows 上,在创建实例时,这个参数设置为 Administrator (但如果db2 get dbm cfg,看起来是空的)。
在 UNIX 上,它设置为创建这个实例的用户的主组。
db2 update dbm cfg using SYSADM_GROUP db2grp1
这一修改直到实例停止并重新启动之后才会生效
SYSCTRL 权限
与 SYSADM 用户不同,他们不能访问数据库中的任何数据,除非他们被授予了访问数据所需的特权。
* db2start/db2stop
* db2 create/drop database
* db2 create/drop tablespace
* db2 backup/restore/rollforward database
* db2 runstats(针对任何表)
* db2 update db cfg for database dbname
拥有 SYSADM 权限的用户可以使用以下命令将 SYSCTRL 分配给一个组:
db2 update dbm cfg using SYSCTRL_GROUP group_name
SYSMAINT 权限
拥有 SYSCTRL 权限的用户可以发出的命令的子集,不能创建或删除数据库或表空间
db2 update dbm cfg using SYSMAINT_GROUP group name
DBADM 权限
DBADM 权限是一个数据库级权限,而不是实例级权限。可以通过下面的方式,得到。
* db2 create database test
这个命令将数据库 test 上的 DBADM 权限隐式地授予发出此命令的用户。
* db2 connect to sample
db2 grant dbadm on database to user tst1
这个命令只能由 SYSADM 用户发出;
向用户 tst1 授予的 DBADM 权限。
在授予 DBADM 权限之前,必须连接到数据库。 (难道没有直接给的?)
* db2 grant dbadm on database to group db2grp1
这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。
LOAD 权限
拥有 LOAD 权限的用户可以运行以下命令:
* db2 quiesce tablespaces for table
* db2 list tablespaces
* db2 runstats(任何表)
* db2 load insert(必须有表上的插入特权)
* db2 load restart/terminate after load insert(必须有表上的插入特权)
* db2 load replace(必须有表上的插入和删除特权)
* db2 load restart/terminate after load replace(必须有表上的插入和删除特权)
只有拥有 SYSADM 或 DBADM 权限的用户能够对用户或用户组授予或撤消 LOAD 权限。
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
db2 grant load on database to group grp1
5种不同的权限级别:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD
但我看了,cfg中,还有SYSMON, 可能后面会提到 (获取对数据库系统监视器数据的访问权)
又或者看的版本没更新。
DB2 授权控制数据库安全计划的以下方面:
* 用户被授予的权限级别
* 允许用户运行的命令
* 允许用户读取和/或修改的数据
* 允许用户创建、修改和/或删除的数据库对象
在 DB2 可用的 5 种权限中,
SYSADM、SYSCTRL 和 SYSMAINT 是实例级权限;这些权限只能分配给组;通过 DBM CFG 文件分配权限。
针对特定数据库的 DBADM 和 LOAD 权限可以分配给用户或用户组,使用 GRANT 命令显式地分配这些权限。
用户可以通过发出以下命令来判断自己拥有哪些权限和数据库级特权:
db2 get authorizations
Administrative Authorizations for Current User
Direct SYSADM authority = NO
Direct SYSCTRL authority = NO
Direct SYSMAINT authority = NO
Direct DBADM authority = NO
Direct CREATETAB authority = YES
Direct BINDADD authority = YES
Direct CONNECT authority = YES
Direct CREATE_NOT_FENC authority = YES
Direct IMPLICIT_SCHEMA authority = NO
Direct LOAD authority = NO
Direct QUIESCE_CONNECT authority = NO
Direct CREATE_EXTERNAL_ROUTINE authority = YES
Direct SYSMON authority = NO
Indirect SYSADM authority = NO
Indirect SYSCTRL authority = NO
Indirect SYSMAINT authority = NO
Indirect DBADM authority = NO
Indirect CREATETAB authority = YES
Indirect BINDADD authority = YES
Indirect CONNECT authority = YES
Indirect CREATE_NOT_FENC authority = NO
Indirect IMPLICIT_SCHEMA authority = YES
Indirect LOAD authority = NO
Indirect QUIESCE_CONNECT authority = NO
Indirect CREATE_EXTERNAL_ROUTINE authority = NO
Indirect SYSMON authority = NO
SYSADM 权限
只允许 SYSADM 用户更新 DBM CFG 文件。
SYSADM 权限由DBM CFG文件中的 SYSADM_GROUP 参数控制。
在 Windows 上,在创建实例时,这个参数设置为 Administrator (但如果db2 get dbm cfg,看起来是空的)。
在 UNIX 上,它设置为创建这个实例的用户的主组。
db2 update dbm cfg using SYSADM_GROUP db2grp1
这一修改直到实例停止并重新启动之后才会生效
SYSCTRL 权限
与 SYSADM 用户不同,他们不能访问数据库中的任何数据,除非他们被授予了访问数据所需的特权。
* db2start/db2stop
* db2 create/drop database
* db2 create/drop tablespace
* db2 backup/restore/rollforward database
* db2 runstats(针对任何表)
* db2 update db cfg for database dbname
拥有 SYSADM 权限的用户可以使用以下命令将 SYSCTRL 分配给一个组:
db2 update dbm cfg using SYSCTRL_GROUP group_name
SYSMAINT 权限
拥有 SYSCTRL 权限的用户可以发出的命令的子集,不能创建或删除数据库或表空间
db2 update dbm cfg using SYSMAINT_GROUP group name
DBADM 权限
DBADM 权限是一个数据库级权限,而不是实例级权限。可以通过下面的方式,得到。
* db2 create database test
这个命令将数据库 test 上的 DBADM 权限隐式地授予发出此命令的用户。
* db2 connect to sample
db2 grant dbadm on database to user tst1
这个命令只能由 SYSADM 用户发出;
向用户 tst1 授予的 DBADM 权限。
在授予 DBADM 权限之前,必须连接到数据库。 (难道没有直接给的?)
* db2 grant dbadm on database to group db2grp1
这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。
LOAD 权限
拥有 LOAD 权限的用户可以运行以下命令:
* db2 quiesce tablespaces for table
* db2 list tablespaces
* db2 runstats(任何表)
* db2 load insert(必须有表上的插入特权)
* db2 load restart/terminate after load insert(必须有表上的插入特权)
* db2 load replace(必须有表上的插入和删除特权)
* db2 load restart/terminate after load replace(必须有表上的插入和删除特权)
只有拥有 SYSADM 或 DBADM 权限的用户能够对用户或用户组授予或撤消 LOAD 权限。
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
db2 grant load on database to group grp1