MongoDB:shutdownServer失败:管理员未授权执行命令db.grantRolesToUser db.createUser

时间:2015-08-06 22:56:59

标签: mongodb admin shutdown unauthorized replicaset

我想将独立转换为副本集。该过程的第一步提到关闭独立的mongod实例。实际上function itemSum(newOutput, arrayFinal) { console.log(newOutput); console.log(arrayFinal.toString()); for(i = 0; i < arrayFinal.length; i++) { newOutput = arrayFinal[i] + newOutput; console.log(arrayFinal[i]); } console.log(newOutput); return newOutput; } 命令会抛出以下错误: shutdownServer失败:管理员未授权执行命令。 内置角色hostManager应授权此命令。所以我尝试过: db.shutdownServer()因此抛出错误:管理员未授权执行命令。我正在使用具有以下角色的用户的MongoDB shell版本:3.0.5:dbOwner,userAdmin,readWrite。 另一种方法是使用:db.grantRolesToUser("lala", [{role: "hostManager", db: "myDB"}])抛出错误:无法添加用户:没有名为hostManager @ myDB的角色。 我真的不明白如何关闭。

2 个答案:

答案 0 :(得分:2)

使用--auth选项打开Mongod实例时,表示您的数据库已通过身份验证。但是,无需任何身份验证即可建立与db的连接,但由于未经过身份验证,因此无法执行任何操作,因为它会在您的描述中引发错误。现在切换到经过身份验证的数据库,然后使用

执行身份验证

db.auth(用户名,密码)

现在您可能有权在db.Try关闭服务器上执行授权操作

答案 1 :(得分:1)

试试这个:

  

db.updateUser(“root”,{roles:[{“role”:“userAdminAnyDatabase”,“db”:“admin”},{“role”:“dbOwner”,“db”:“admin”} ,{“role”:“clusterAdmin”,“db”:“admin”}]})

只需使用您的用户名而不是“root”。