锁定在我自己的mongodb实例之外

锁定在我自己的mongodb实例之外,mongodb,Mongodb,我创建了两个用户,我以为他们是用户管理员。不幸的是,当我与他们一起登录时,我的所有权限都被拒绝。如果我在没有提供用户名或密码的情况下在本地登录,我的所有权限都会被拒绝。我能做什么 用户是使用以下命令创建的 使用admin db.createUser( { 用户:“Nikhil”, pwd:“想知道吗”, 角色:[“userAdminAnyDatabase”] } ) userAdminAnyDatabase不是我认为的意思吗?我使用的是,您已经启用了授权安全性,以便发生这种情况。为什么不将se

我创建了两个用户,我以为他们是用户管理员。不幸的是,当我与他们一起登录时,我的所有权限都被拒绝。如果我在没有提供用户名或密码的情况下在本地登录,我的所有权限都会被拒绝。我能做什么

用户是使用以下命令创建的

使用admin
db.createUser(
{
用户:“Nikhil”,
pwd:“想知道吗”,
角色:[“userAdminAnyDatabase”]
}
)

userAdminAnyDatabase
不是我认为的意思吗?

我使用的是,您已经启用了授权安全性,以便发生这种情况。为什么不将security.authorization设置为disabled并重新启动mongod

就您发出的命令而言,它看起来不正确,应该是这样的:

使用admin
db.createUser(
{
用户:“Nikhil”,
pwd:“想知道吗”,
角色:
[
{
角色:“userAdminAnyDatabase”,
db:“管理员”
}
]
}
)
注意,您必须在调用中传入一个包含角色和db的文档

最好的起点是:

此用户仅限于所有数据库上的userAdmin角色。如果要执行其他操作,您需要授予自己其他角色或创建拥有这些角色的新用户:

userAdminAnyDatabase
提供与userAdmin相同的用户管理操作访问权限,但它适用于群集中的所有数据库。该角色还对整个集群提供以下操作:
authSchemaUpgrade
失效EUSERCACHE
列表数据库
该角色还对admin数据库上的admin.system.users和admin.system.roles集合以及MongoDB 2.6之前版本中的遗留system.users集合提供以下操作:
科尔斯塔斯
数据库哈希
数据库状态
找到
杀手
平面缓存读取
userAdminAnyDatabase角色不限制用户可以授予的权限。因此,userAdminAnyDatabase用户可以授予自己超出其当前权限的权限,甚至可以授予自己所有权限,即使角色没有明确授权用户管理之外的权限。此角色实际上是MongoDB系统超级用户。

您只需重新启动MongoD,而无需使用auth选项,它将允许您登录并执行任何操作

或者,您也可以为本地主机身份验证启用旁路,并从运行MongoD的同一主机进行连接。有关它的更多信息,请访问


根据您使用的MongoDB版本,上述步骤可能会有不同的行为,我建议您在上述网站上查找特定于版本的文档。

我使用的是复制,因此启用了授权。我可以禁用它,但我可能做错了。除了官方文档之外,还有什么好的资源?添加了对答案的编辑-相信您的角色设置不正确,添加了文档链接。确定。我现在可以使用用户名/密码登录,只要我在命令行上指定要进入管理数据库。我在尝试显示服务器启动警告时遇到错误“error:notauthorized on admin来执行命令{getLog:“startupWarnings”}”,这是应该的吗?因此该用户只有UserAdmin权限-没有其他权限。我将为答案添加更多细节,但您需要授予自己更多权限,或者创建另一个具有正确权限的用户。