在我的计算机上安装Portlet Server时出现DB2错误。
[exec] + db2 "UPDATE DBM CFG USING sheapthres 0"
[exec] DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
[exec] successfully.
[exec] + db2 -v "CREATE DB wpsdb USING CODESET UTF-8 TERRITORY US PAGESIZE 8192"
[exec] CREATE DB wpsdb USING CODESET UTF-8 TERRITORY US PAGESIZE 8192
[exec] SQL1092N "PJAMI" does not have the authority to perform the requested command
[exec] or operation.
错误日志log file URL
我是我机器的管理员。
答案 0 :(得分:0)
如果您是机器的管理员,则无关紧要。 DB2依赖于OS安全机制来进行身份验证步骤。但是,授权步骤在DB2中。这意味着,DB2具有多个安全级别,并且您的用户不属于最重要的级别。
要创建数据库,您必须检查文档中所需的权限:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.admin.cmd.doc/doc/r0001941.html
如您所见,只有属于SYSADM或SYSCTRL的用户才能创建数据库;但现在,你可以问这些权威机构在哪里定义?那么,这些权限是在实例级别定义的,用于为它们关联OS组。您运行命令:
db2 get dbm cfg | grep GROUP
你会看到这些小组。如果您的用户不属于其中一个组,则您的用户将无法创建数据库。
为了了解您所属的群组:
id
要更改组,您需要是root
sudo su vi /etc/group
要更改DB2权限,您需要具有SYSADM权限或切换到实例所有者:
su - db2inst1
db2 update dbm cfg using SYSADM_GROUP db2admins
答案 1 :(得分:0)
当您的计算机是Windows域的一部分时,缺省值是DB2根据定义ID的位置枚举特定ID所属的组。因此,DB2将向域控制器请求域ID,并向本地计算机请求本地ID。
因此,在您的情况下,即使您的PJAMI
ID在本地计算机上具有管理员权限,DB2也会向域控制器询问您所属的组而不是本地计算机。
有两种解决方法:
将DB2注册表变量DB2_GRP_LOOKUP
设置为LOCAL
db2set DB2_GRP_LOOKUP=LOCAL
这将指示DB2始终使用本地计算机枚举用户的组,无论该ID是在域还是本地计算机中定义。
您必须重新启动DB2实例才能使其生效。
使用本地计算机上存在且具有足够权限的其他ID(如可能在安装期间创建的db2admin ID)。
注意:@ AngocA关于验证SYSADM_GROUP
等设置的答案是正确的;但请注意,默认情况下,在Windows上SYSADM_GROUP
为空。在这种情况下,DB2将本地计算机的Administrators
组用作SYSADM_GROUP
。