Websphere MQ 7.0遇2035错误,如何允许任意用户连接发送数据?
解决WebSphere MQ 7.0中2035权限错误(允许所有用户连接发送)
首先得明确:MQ错误码2035就是权限验证失败——MQ默认会校验连接用户是否拥有访问队列管理器、发送消息的权限。既然用户数量频繁变动,没法挨个加到mqm组,下面几个方案能帮你实现“允许所有用户连接并发送数据”的需求,我按安全性和实用性排序给你说明:
方案1:配置通道认证规则(推荐,安全且灵活)
WebSphere MQ 7.0支持通道认证记录(CARs),可以通过规则批量授权所有用户:
- 先打开MQSC命令行工具,输入:
runmqsc <你的队列管理器名称> - 添加通道级的用户映射规则,允许所有用户连接指定的服务器连接通道:
SET CHLAUTH(<你的通道名>) TYPE(USERMAP) DESCR('允许所有用户连接该通道') USERLIST('*') USERSRC(CHANNEL) ACTION(ADD) - 接下来要给所有用户授予发送消息的权限,你可以针对特定队列或者整个管理器授权:
- 给所有用户授予某队列的PUT权限:
SET AUTHREC PROFILE(<目标队列名>) OBJTYPE(QUEUE) PRINCIPAL('*') AUTHADD(PUT) - 给所有用户授予队列管理器的CONNECT权限(必须的,否则连不上):
SET AUTHREC PROFILE(<你的队列管理器名>) OBJTYPE(QMGR) PRINCIPAL('*') AUTHADD(CONNECT)
- 给所有用户授予某队列的PUT权限:
- 输入
END退出MQSC,然后刷新权限让配置生效:REFRESH SECURITY TYPE(CONNAUTH)
方案2:关闭连接认证(适合测试/内部可信环境)
如果你的环境不需要严格的用户身份校验,可以直接关闭MQ的连接认证:
- 进入MQSC:
runmqsc <你的队列管理器名称> - 修改队列管理器的CONNAUTH配置,清空验证规则:
ALTER QMGR CONNAUTH(' ') - 同样需要给所有用户授予CONNECT和PUT权限(参考方案1的AUTHREC命令),然后刷新权限:
REFRESH SECURITY TYPE(CONNAUTH)
注意:这个方案安全性很低,只建议在测试环境或者完全可信的内部网络里用,生产环境谨慎考虑。
方案3:使用通道MCAUSER属性(集中管理权限)
你可以给服务器连接通道设置一个拥有足够权限的MCAUSER,这样所有通过该通道连接的客户端都会以这个用户的身份执行操作,不用管客户端自己的用户名:
- 进入MQSC:
runmqsc <你的队列管理器名称> - 修改通道的MCAUSER为mqm组的用户(比如直接用
mqm,或者创建一个专门的低权限用户,只给CONNECT和PUT权限):ALTER CHANNEL(<你的通道名>) CHLTYPE(SVRCONN) MCAUSER('mqm') - 刷新通道配置:
REFRESH CHANNEL(<你的通道名>)
这个方案的优势是不用管客户端的用户变动,所有请求共享MCAUSER的权限。但要注意最小化MCAUSER的权限,别直接用mqm(权限太大),最好创建一个专用的业务用户,只授予必要的权限,降低安全风险。
根据你的实际环境选就行,优先推荐方案1,它在安全和灵活之间平衡得最好;如果是测试环境图省事可以用方案2;方案3适合需要集中管控通道权限的场景。
内容的提问来源于stack exchange,提问作者sebkoe
相关产品推荐
相关产品推荐

