Ibm mq 从HermesJMS到MQ8的错误2035(';MQRC_未授权';)

Ibm mq 从HermesJMS到MQ8的错误2035(';MQRC_未授权';),ibm-mq,hermes-jms,Ibm Mq,Hermes Jms,我正在使用HermesJms访问MQ8服务器 后者具有以下配置: 但是,当我试图通过Hermes提供的相关选项“发现”时,我得到一个2035,队列管理器错误日志上显示以下消息: AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'. EXPLANATION: The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reas

我正在使用HermesJms访问MQ8服务器

后者具有以下配置:

但是,当我试图通过Hermes提供的相关选项“发现”时,我得到一个
2035
,队列管理器错误日志上显示以下消息:

AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.

EXPLANATION:
The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reason
2035.
请注意,
pkaramol
是我在运行Hermes的linux机器上登录的本地操作系统用户

问题

1) 为什么在禁用了
CHLAUTH
CONNAUTH
的情况下仍出现以下错误:

ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')

REFRESH SECURITY TYPE(CONNAUTH)

2) 为什么服务器将
pkaramol
视为试图访问队列管理器的用户,尽管我在HermesJMS的
ClientID
user
字段中明确提供了
mquser

但您需要授予UserId“pkaramol”权限,以便通过命令访问队列管理器和队列。

我找不到关于HermesJMS的很多文档,但通过一些尝试和错误,我发现它不尊重
用户
密码
设置。如果单击“发现”,它将始终将您登录的用户发送到队列管理器,这就是为什么您看不到用户
mquser
。由于您以用户
pkaramol
的身份运行它,而队列管理器运行的服务器上不存在该用户,因此您会收到以下错误:

AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
我还发现,要执行discover,它会使用model queue
SYSTEM.DEFAULT.model.queue
打开一个临时动态队列,并将PCF消息放入
SYSTEM.ADMIN.COMMAND.queue
。此外,为了发现任何队列详细信息,您必须在队列上至少有
+inq
+dsp

您在评论中表示已将用户
pkaramol
添加到服务器,并将其放入
mqm
组。虽然这是一种使其工作的快速方法,但它确实为用户提供了完全的MQ管理员访问权限。您可以向实际用户提供以下权限,并且仍然能够发现队列管理器上的所有对象。请将下面的单词
group
替换为您的用户在服务器上所属的组:

setmqaut -m DMSQM -t qmgr -g group +connect +inq +dsp
setmqaut -m DMSQM -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g group +inq +put +dsp
setmqaut -m DMSQM -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g group +get +dsp
setmqaut -m DMSQM -n '**' -t queue -g group +inq +dsp
我还注意到,一旦您通过发现或手动添加队列来填充队列,它将使用您指定的用户

请注意,禁用了
CHLAUTH
CONNAUTH
后,队列管理器将获取呈现的任何用户并使用它。您可以保持启用
CONNAUTH
,并指定有效的用户和密码,MQ将对其进行身份验证


由于Discover不支持用户设置,另一个选项是在
mquser

的SVRCONN通道上设置
MCAUSER
。查询管理器的AMQERR01.LOG中是否存在具有相同时间戳的其他错误?如果使用了MQCSP块,错误是否也会显示
,MQCSP块中的用户ID为“mquser”。
能否确认正在使用的HermesJMS版本,以及是否使用任何特殊标志启动它?@JoshMc否,没有其他错误,也没有打印MQSCP消息。我通过在服务器上创建一个
pkaramol
系统用户并将其添加到
mqm
组来绕过错误,但这似乎不是解决此问题的正确方法。是的,您需要在运行队列管理器的服务器上知道用户ID。其次,将UserId放入“mqm”组是一个糟糕的主意。你只是规避了安全措施。从mqm组中删除您的用户ID,并使用setmqaut命令设置适当的授权(权限)。根据您的使用情况,您可能会对哪一种更易于使用和配置感兴趣。他对您如何以问题的形式而不是陈述的形式来表述答案感到困惑。这是一个普遍的问题;我们有很多人试图滥用回答框来问澄清问题。我已经调整了措辞,这样以后就不会有问题了。@pkaramol您使用的是什么版本的HermesJMS?我在Ubuntu 16.04上使用的是1.14,但Windows用户也注意到了这一点。@pkaramol-您可以提供有关如何解决问题的详细信息吗?我遇到了同样的问题。任何信息。或者细节会对我有很大帮助。提前谢谢!