Java应用连接IBM MQ DEV.ADMIN.SVRCONN通道报2035错误如何解决
IBM MQ Docker默认部署admin连接2035错误解决配置
报错原因
MQRC_NOT_AUTHORIZED 2035错误代表账号没有对应通道的访问权限,ibmcom/mq官方镜像默认开启了通道权限校验,限制了admin账号远程连接DEV.ADMIN.SVRCONN通道的权限。
配置步骤
首先进入MQ容器操作:
- 执行命令进入容器终端:
docker exec -it <你的MQ容器名称> bash - 切换到mqm管理用户:
su mqm - 进入MQSC命令交互界面(默认队列管理器名为DEV.QMGR,自定义过请替换为你的队列管理器名):
runmqsc DEV.QMGR
方案1:测试环境快速配置(不推荐生产使用)
直接关闭权限校验,配置即时生效,无需重启服务:
ALTER QMGR CHLAUTH(DISABLED) ALTER QMGR CONNAUTH('') REFRESH SECURITY TYPE(CONNAUTH)
输入end退出MQSC界面即可。
方案2:生产环境安全配置(最小权限开放)
保留权限校验规则,仅开放admin账号的必要权限:
- 删除默认的DEV.ADMIN.SVRCONN通道全局拦截规则:
SET CHLAUTH('DEV.ADMIN.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS) ACTION(REMOVE) - 新增admin账号访问通道的映射规则:
SET CHLAUTH('DEV.ADMIN.SVRCONN') TYPE(USERMAP) CLNTUSER('admin') USERSRC(MAP) MCAUSER('admin') ACTION(ADD) - 给admin账号授予队列管理器连接权限:
SET AUTHREC PRINCIPAL('admin') OBJTYPE(QMGR) AUTHADD(CONNECT,INQ,DSP) - 如需操作默认DEV开头的业务队列,额外授予队列操作权限:
SET AUTHREC PRINCIPAL('admin') OBJTYPE(QUEUE) OBJNAME('DEV.*') AUTHADD(ALLMQI) - 刷新安全配置生效:
REFRESH SECURITY TYPE(CONNAUTH)
输入end退出MQSC界面即可。
连接参数校验
确认Java应用的连接配置和你部署的MQ参数一致,默认配置如下:
- 队列管理器名:
DEV.QMGR - 通道名:
DEV.ADMIN.SVRCONN - 服务端口:
1414 - 密码:启动容器时通过
MQ_ADMIN_PASSWORD环境变量指定的值
注意:如果启动容器时没有设置
MQ_ADMIN_PASSWORD,需要先在容器内执行passwd admin修改admin用户的系统密码后再连接,MQ默认复用操作系统的用户账号密码体系。
内容的提问来源于stack exchange,提问作者Jib'z
相关产品推荐
相关产品推荐

