网上很多资料关于解决2035错误的方法都是对于Websphere MQ V7.x 的,我使用的是V8.0,使用网上的解决方法仍然会报2035错误,后来发现在V8.0中需要多注意一个配置才能解决2035错误。参考:http://stackoverflow.com/questions/25911557/websphere-mq-v8-mqrc-not-authorized-2035
在V8中,与服务器的连接默认需要密码去认证,可以通过配置队列管理器的连接认证选项来解决:
通过以下命令行指令解决,将连接认证选项中的SYSTEM.DEFAULT.AUTHINFO.IDPWOS的相关属性配置为OPTIONAL:
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
或者直接将连接认证选项置为空,将其完全关闭,指令如下:
ALTER QMGR CONNAUTH(' ') 注:单引号内有空格
在执行完上述两条命令中的任一条后,都需要刷新连接认证的缓存,指令如下:
REFRESH SECURITY TYPE(CONNAUTH)
注意服务器连接通道的MCAUSER(MCA用户标识)属性,该属性表示通过该通道连接的应用程序在和队列管理器进行通信时所使用的用户名称,
其值必须为MQ服务器上的mqm组内的用户,否则便会出现2035错误。需要注意,如果MCAUSER为空,则使用运行MQ应用程序所在的操作系统上的用户名称;
如果MCAUSER不为空,则使用该值作为应用程序连接通道时使用的用户名称:
例如 windows 服务器 修改为 tlcb用户
那么 linux 上也需要创建tlcb用户,同时加入mqm组