可以创建Websphere队列管理器但不能连接

Chr*_*ill 6 ibm-mq

我需要编写一个.Net连接器到WebSphere MQ队列,所以我在我的Windows 7机器上安装了IBM WebSphere MQ的试用版.我最初在MQ Explorer中设置了一些虚拟队列来使用设置过程,我能够连接到这些队列管理器并创建队列.我删除了那些虚拟队列,并遵循IBM第1课的第一组指令 ,在这里我从命令行创建了一些队列

由于安全问题,我无法运行第1.2课,现在我无法连接到MQ Explorer中的任何队列管理器.当我尝试连接时,我收到错误消息

An unexpected error (2063) has occurred. (AMQ4999)
Run Code Online (Sandbox Code Playgroud)
  • 我是我机器上的本地管理员.
  • 我已将自己添加到创建的mqm组中
  • 我使用和不使用"以管理员身份运行"选项运行MQ Explorer
  • 我已经卸载了MQ并重新安装了它
  • 我重启了好几次

我还注意到,当我在MQ Explorer中创建队列管理器时,最后一部分因AMQ8135而失败:未经授权.(见下面的输出)

有什么明显的东西让我失踪吗?

有什么方法可以解决我自己的问题 - 日志文件似乎没有让我知道在哪里看


****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\crtmqm"  -sa  QM1
****************************************
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Directory 'C:\Program Files (x86)\IBM\WebSphere MQ\qmgrs\QM1' created.
The queue manager is associated with installation 'Installation2'.
Creating or replacing default objects for queue manager 'QM1'.
Default objects statistics : 74 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
exitvalue = 0
****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\strmqm" QM1
****************************************
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager 'QM1' starting.
The queue manager is associated with installation 'Installation2'.
5 log records accessed on queue manager 'QM1' during the log replay phase.
Log replay for queue manager 'QM1' complete.
Transaction manager state recovered for queue manager 'QM1'.
WebSphere MQ queue manager 'QM1' started using V7.1.0.0.
exitvalue = 0
****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\runmqsc" QM1
* Input: DEFINE LISTENER('LISTENER.TCP') TRPTYPE(TCP) PORT(1414) CONTROL(QMGR)
****************************************
5724-H72 (C) Copyright IBM Corp. 1994, 2011.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM1.
AMQ8135: Not authorized.
No MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
exitvalue = 20
Run Code Online (Sandbox Code Playgroud)

T.R*_*Rob 15

如果您有最近的WMQ试用版,那么您正在使用v7.1 QMgr.从v7.1开始,WMQ将仅允许非特权远程连接.为了与管理员帐户建立连接,有必要禁用这些限制,或者更好的是,为管理连接定义新通道并对其进行身份验证.

对于Windows,最大的问题是WMQ对域ID进行身份验证,并且必须查找其组.在企业环境中运行WMQ时,一个非常常见的问题是它尝试查找ID或组,并且没有域权限. 域帐户,即使是具有本地管理员权限的域帐户,通常也会失败,因为他们无权访问域SAM中的查询以进行组查找.有信息中心中的一整节在这里描述了用于Windows帐户的要求.

仅针对开发环境的一种解决方法是创建本地管理员帐户,然后使用该帐户登录并创建QMgr.或者确保默认帐户MUSR_MQADMIN具有本地管理员权限和登录权限.同样,您必须实际登录该帐户才能使其正常工作,因为这样就不需要在Active Directory中查找帐户,因为它都会访问本地SAM数据库.再次,这只是为了发展!在生产中,您需要使用真实的域帐户并授予其执行SAM查找的正确访问权限,但不要使其成为本地管理员,如上面链接的信息中心部分所述.

假设您已成功创建QMgr,接下来创建一个新频道并授权它使用admin帐户接受您的本地连接:

runmqsc
* Define the channel, anyone connecting runs as MUSR_MQADMIN
DEFINE CHL('DOTNET.SVRCONN')  CHLTYPE(SVRCONN) MCAUSER('MUSR_MQADMIN@hostname')

* Override default block-list - channel now allows ANYBODY
SET CHLAUTH('DOTNET.SVRCONN') TYPE(BLOCKUSER) USERLIST('nobody')

* Block access from ALL IP addresses
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS) WARN(NO) ACTION(ADD)

* Allow access from local host only
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('127.0.0.1') USERSRC(CHANNEL) ACTION(ADD) 

END
Run Code Online (Sandbox Code Playgroud)

现在,您有一个仅接受本地连接的通道,将这些通道映射到管理帐户,然后覆盖阻止管理帐户远程连接的安全性.使用admin帐户意味着不需要队列或QMgr授权,并且该帐户是本地管理员意味着没有域查找问题.在MCAUSER('MUSR_MQADMIN)每个远程ID,以本地管理员ID,以便WMQ并不需要查找的远程ID转换.映射规则仅限制与本地主机的连接.任何可以连接到该频道的人都将拥有能够远程执行操作系统代码的本地管理员,因此如果您想接受来自其他用户的连接,建议使用证书对其进行身份验证.