症状
JMSCMQ0001:使用compcode'2'('MQCC_FAILED')原因'2035'('MQRC_NOT_AUTHORIZED')的WebSphere MQ调用失败
【小技巧:如果想知道MQ返回的码是什么意思,可以在主机上执行 ‘mqsc 2035‘,查看数字背后的真正含义,数据可以随便换】
原因
MQ连接被拒绝的两个最可能的原因如下(IBM网站上抄来的):
- 在客户机连接上从应用程序服务器传递到MQ的用户标识在运行MQ队列管理器的服务器上未知,未被授权连接到MQ或超过12个字符并已被截断。
- 通过客户端连接从应用程序服务器传递到MQ的用户标识符是承载MQ队列管理器的服务器上的“mqm”组的成员,并且存在阻止对队列管理器的管理访问的通道认证记录(CHLAUTH)。WebSphere MQ 在WebSphere MQ V6.1 及更高版本中默认配置CHLAUTH记录,阻止所有MQ管理员作为客户机连接到队列管理器。在这种情况下可能会看到MQ错误日志中的以下错误:AMQ9777:通道被阻止
诊断问题
咋解决呢?
针对原因1,可以将应用传递给MQ队列管理器的用户名加入MQ所在机器上的有权限的用户组里,Linux默认一般是mqm组。用户名要是长了,自行解决。
针对原因2,我一般用下面两条命令,直接关闭通道权限认证:
alter qmgr chlauth(disabled)
refresh security type(connauth)