本人今天使用update更新dbm cfg时候出现了SQL5001N错误,那么就简单的分析一下并给出解决方法:
操作命令:db2 update dbm cfg using DFT_MON_STMT on
报错信息:SQL5001N "KEVIN" does not have the authority to change the database manager configuration file.
kevin是我的db2数据库用户名字,明显是kevin用户没有被授权修改dbm 配置
首先介绍一下最基础的东西:
实例级权限:
SYSADM 最高管理权限,通常供DBA使用
SYSCTRL 最高系统控制权限,有SYSMAINT 和SYSMON 的全部权限
SYSMAINT 次级系统 控制权限
SYSMON 最小的实例级管理权限
Unix/Linux下的查看命令:
db2 get dbm cfg|grep "SYSADM"
db2 get dbm cfg|grep "SYSCTRL"
db2 get dbm cfg|grep "SYSMAINT"
db2 get dbm cfg|grep "SYSMON"
知道了上面的知识,那么就知道修改dbm cfg需要有最高权限sysadm,
那么在我的终端是用db2 get dbm cfg | grep SYSADM
SYSADM group name (SYSADM_GROUP) = DB2IADM1
知道只有在组DB2IADM1下才有权限去执行,那么我的示例用户是db2inst1,
那么终端使用命令id db2inst1
uid=801(db2inst1) gid=901(db2iadm1) 组=901(db2iadm1),903(db2dadm1)
很明显使用db2inst1用户就可以执行dbm cfg更新了
然后使用su命令切换到db2inst1用户下:su - db2inst1
最后再次使用命令:db2 update dbm cfg using DFT_MON_STMT on
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully.
OK成功了 明白了吧