从 HermesJMS 到 MQ8 的错误 2035 ('MQRC_NOT_AUTHORIZED')
Error 2035 ('MQRC_NOT_AUTHORIZED') from HermesJMS to MQ8
我正在使用 HermesJms 访问 MQ8 服务器。
后者的配置如下:
但是,当我尝试通过 Hermes 提供的相关选项 "Discover" 时,我得到一个 2035
,队列管理器错误日志中出现以下消息:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
EXPLANATION:
The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reason
2035.
请注意,pkaramol
是我登录的本地 OS 用户,在 linux 机器 运行 Hermes 中。
问题:
1) 尽管我已禁用 CHLAUTH
和 CONNAUTH
为什么我仍会收到以下错误:
ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')
REFRESH SECURITY TYPE(CONNAUTH)
2) 为什么服务器将 pkaramol
视为用户尝试访问队列管理器,尽管我在 ClientID
和 user
中都明确提供了 mquser
HermesJMS 的字段?
您需要通过 setmqaut 命令授予 UserId 'pkaramol' 访问队列管理器和队列的权限。
我找不到很多关于 HermesJMS 的文档,但是通过反复试验我发现它不支持 User
和 Password
设置,如果您单击“发现”,它将始终发送您已登录到队列管理器的用户,这就是您看不到用户 mquser
的原因。因为你是 运行 它作为用户 pkaramol
而你的队列管理器 运行 所在的服务器上不存在你会收到以下错误:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
我还发现,要执行发现,它会使用模型队列 SYSTEM.DEFAULT.MODEL.QUEUE
打开一个临时动态队列,并将 PCF 消息放入 SYSTEM.ADMIN.COMMAND.QUEUE
。此外,要使其发现任何队列详细信息,您必须在队列上至少具有 +inq
和 +dsp
。
在您的评论中,您说您已将用户 pkaramol
添加到服务器并将其放入 mqm
组。虽然这是使其工作的快速方法,但它确实为该用户提供了完整的 MQ 管理员访问权限。您可以为您的实际用户提供以下权限,并且仍然能够发现队列管理器上的所有对象。请将下面的单词 group
替换为您的用户在服务器上所属的组:
setmqaut -m DMSQM -t qmgr -g group +connect +inq +dsp
setmqaut -m DMSQM -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g group +inq +put +dsp
setmqaut -m DMSQM -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g group +get +dsp
setmqaut -m DMSQM -n '**' -t queue -g group +inq +dsp
我还注意到,一旦您通过发现或手动添加填充了队列,它将使用您指定的用户。
请注意,在 CHLAUTH
和 CONNAUTH
禁用的情况下,队列管理器将获取并使用呈现的任何用户。您可以启用 CONNAUTH
并指定有效的用户和密码,MQ 将对其进行身份验证。
由于 Discover 不支持用户设置,另一个选项是在 mquser
的 SVRCONN 通道上设置 MCAUSER
。
我正在使用 HermesJms 访问 MQ8 服务器。
后者的配置如下:
但是,当我尝试通过 Hermes 提供的相关选项 "Discover" 时,我得到一个 2035
,队列管理器错误日志中出现以下消息:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
EXPLANATION:
The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reason
2035.
请注意,pkaramol
是我登录的本地 OS 用户,在 linux 机器 运行 Hermes 中。
问题:
1) 尽管我已禁用 CHLAUTH
和 CONNAUTH
为什么我仍会收到以下错误:
ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')
REFRESH SECURITY TYPE(CONNAUTH)
2) 为什么服务器将 pkaramol
视为用户尝试访问队列管理器,尽管我在 ClientID
和 user
中都明确提供了 mquser
HermesJMS 的字段?
您需要通过 setmqaut 命令授予 UserId 'pkaramol' 访问队列管理器和队列的权限。
我找不到很多关于 HermesJMS 的文档,但是通过反复试验我发现它不支持 User
和 Password
设置,如果您单击“发现”,它将始终发送您已登录到队列管理器的用户,这就是您看不到用户 mquser
的原因。因为你是 运行 它作为用户 pkaramol
而你的队列管理器 运行 所在的服务器上不存在你会收到以下错误:
AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.
我还发现,要执行发现,它会使用模型队列 SYSTEM.DEFAULT.MODEL.QUEUE
打开一个临时动态队列,并将 PCF 消息放入 SYSTEM.ADMIN.COMMAND.QUEUE
。此外,要使其发现任何队列详细信息,您必须在队列上至少具有 +inq
和 +dsp
。
在您的评论中,您说您已将用户 pkaramol
添加到服务器并将其放入 mqm
组。虽然这是使其工作的快速方法,但它确实为该用户提供了完整的 MQ 管理员访问权限。您可以为您的实际用户提供以下权限,并且仍然能够发现队列管理器上的所有对象。请将下面的单词 group
替换为您的用户在服务器上所属的组:
setmqaut -m DMSQM -t qmgr -g group +connect +inq +dsp
setmqaut -m DMSQM -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g group +inq +put +dsp
setmqaut -m DMSQM -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g group +get +dsp
setmqaut -m DMSQM -n '**' -t queue -g group +inq +dsp
我还注意到,一旦您通过发现或手动添加填充了队列,它将使用您指定的用户。
请注意,在 CHLAUTH
和 CONNAUTH
禁用的情况下,队列管理器将获取并使用呈现的任何用户。您可以启用 CONNAUTH
并指定有效的用户和密码,MQ 将对其进行身份验证。
由于 Discover 不支持用户设置,另一个选项是在 mquser
的 SVRCONN 通道上设置 MCAUSER
。