【发布时间】:2013-12-20 06:03:22
【问题描述】:
我正在尝试添加一个经过身份验证的分片。所以当我尝试使用这个命令时
mongos> sh.addShard("xxx.xxx.xxx:27018")
我收到以下错误。
{ "ok" : 0, "errmsg" : "failed listing xxx.xxx.xxx:27018's databases:{ ok: 0.0, errmsg: \"unauthorized\" }" }
请分享你的想法?
【问题讨论】:
我正在尝试添加一个经过身份验证的分片。所以当我尝试使用这个命令时
mongos> sh.addShard("xxx.xxx.xxx:27018")
我收到以下错误。
{ "ok" : 0, "errmsg" : "failed listing xxx.xxx.xxx:27018's databases:{ ok: 0.0, errmsg: \"unauthorized\" }" }
请分享你的想法?
【问题讨论】:
不清楚您使用的是哪个经过身份验证的用户,以及它为您的会话有权获得的所有授权。
我建议您提供以下信息来完成问题:
您已在 mongo 中进行身份验证的用户。即用户用于启动 mongo 会话或之后在 mongo shell 中的任何 db.auth(..)。
db.isMaster() 以确认您已连接到适当的 mongos。即在以下的 mongo shell 输出中:
use admin
db.system.users.find({user: "ReplaceYourUserIdHere"}).pretty()
use config
db.system.users.find({user: "ReplaceYourUserIdHere"}).pretty()
这应该有助于确定您可能缺少哪些角色以及 sh.addShard 操作所需的角色。
有些操作需要特定的权限,sh.addShard 就是其中之一。您可以在http://docs.mongodb.org/manual/reference/user-privileges/ 找到各种操作的详细权限/角色要求。
【讨论】: