在连接IBM MQ时,我遇到了这个错误。 我知道这是权限问题,但有没有办法只检查与IBM MQ的连接?
请提供建议。
如果您启用了授权消息,则2035将出现在事件队列中。然后,您可以查看消息,查看使用哪个ID进行连接以及使用了哪些选项。 2035可能是因为您请求对队列管理器进行设置权限或其他您不应该拥有的权限。 授权消息将向您显示。
您也可以通过设置mcauser('mqm')来解决此问题..我成功地克服了2035错误。
Define channel (channel1) chltype (svrconn) trptype (tcp) mcauser(‘mqm’)
特别感谢我的前辈 Bilal Ahmad (PSE)
MCAUSER('mqm')
,您将为应用程序提供完整的 MQ 管理权限。此外,请注意,在 MQ v7.1 及更高版本中,默认情况下 CHLAUTH 规则将阻止此连接正常工作。 - JoshMc我也曾经苦苦挣扎,最终找到了这个解决方案。(如果你认为关闭身份验证是一个解决方案的话。)
我正在使用版本 - IBM Websphere 9.1.0.201807091223
从IBM的网站上,他们建议关闭连接身份验证!!!
解决问题:禁用通道身份验证
您需要禁用连接身份验证,至少暂时需要这样做。在FTM for Check中有已知问题,涉及使用MQ连接授权。这些问题正在积极解决,并将在未来的修复程序中得到修复。目标是fixpack 3.0.0.8。
禁用连接身份验证的步骤:打开MQ命令控制台并键入runmqsc ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(NONE) CHCKLOCL(NONE),重启此队列管理器以使此更改生效。
来源 http://www-01.ibm.com/support/docview.wss?uid=swg21962081
您需要与MQ管理员检查权限。
您可以使用dspmqaut来检查授权。 以下是将用户poc授予对队列管理器QM1和队列LQ1的访问权限的示例
# check the access right of user POC to QM1
dspmqaut -m QM1 -n LQ1 -t q -p poc
# if you want to give access, you should use
setmqaut -m QM1 -n LQ1 -t q -p poc <access Types>
# eg (put everything - in the real live scenario, choose only what you want to grant) :
setmqaut -m QM1 -n LQ1 -t q -p poc +put +get +browse +inq +set +crt +dlt +chg +dsp +passid +setid +setall +clr
然后不要忘记使用以下命令重新启动QM1:
endmqm -i QM1
strmqm QM1
最后,您应该能够无错误地进行,避免出现2035错误。
错误 MQRC 2035 基本上意味着您的应用程序已能够连接到队列管理器,但由于某些权限/授权的缺失,它无法放置/获取/发布/订阅消息。
为解决此问题,首先尝试按顺序执行以下步骤以禁用队列管理器和通道的授权。仅在不是生产队列管理器时使用此选项。
始终检查队列管理器日志。它会告诉您需要查看和解决的确切问题。
在这种情况下,通常可以在对队列管理器进行 runmqsc 后发出以下命令:
ALTER QMGR CHLAUTH(DISABLED)
然后将authinfo下的chckclnt对象设置为可选项
显示 QMGR CONNAUTH
显示 AUTHINFO(上面的名称) ALL //上一个命令中的名称
修改 AUTHINFO(上面的名称) AUTHTYPE(IDPWOS) ADOPTCTX(YES)
修改 AUTHINFO(上面的名称) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
刷新 SECURITY TYPE(CONNAUTH)
SET CHLAUTH('*') TYPE(BLOCKUSER) ACTION(REMOVEALL)
这将帮助删除通道对任何用户创建的所有阻止。
SET CHLAUTH(您的通道名称) TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(CHANNEL)
由于我们已禁用应用程序必须通过的所有授权才能在队列管理器上执行任何操作,因此这应该解决您的问题。
现在,如果您正在使用生产队列管理器,请永远不要删除授权。 前往您在 MQ 浏览器中配置的任何 QM 上右键单击。转到 QM 权限和权限记录。单击创建新用户,并以与应用程序使用的用户名相同的名称命名。选择所有复选框,然后从下面的空格复制所有给定的命令。即 setmqaut。使用您的队列管理器名称编辑它们并发出!
----永不放弃,答案就在你还没有找到的地方--------
对于在Windows上运行的Q/Q管理器,您可能需要在Q/Q管理器机器上创建用户[即在Q机器上创建与Q客户端机器上的用户匹配的用户],然后将该用户添加到该机器上的“mqm”组中。
步骤:
确保正在用于创建Q CLIENT的域用户[即Q客户端应用程序正在其中运行的用户]也存在于具有Q/Q管理器的计算机上。您可以只在Q/Q管理器框中创建本地用户[或者您可能需要进行一些更复杂的Active Directory用户创建 - 我无法帮助您]。
在Q/Q管理器框中,将您刚刚创建的用户[或现有用户,如果已经存在]添加到mqm组中。[在Windows服务器框中,您需要使用Microsoft Management Console(1.从命令行输入“mmc”,2.文件>添加/删除SnapOn>本地用户和组,3.将用户添加到组中)。]“mqm”组应该已经存在于Q/Q管理器机器上。
CONNAUTH
。由于CONNAUTH
非常糟糕,这是一个好建议,但是假设有人遵循它,他们仍然需要连接的ID在MQ上得到适当的授权。感谢提供链接! - T.Rob