4

我对 mongoDB 有一些权限问题,我使用 auth menthod 创建了一个数据库管理员,这很有效。

我可以使用我使用角色“userAdminAnyDatabase”创建的管理员帐户从远程服务器连接到我的数据库,而不会发出任何警告。但是,当我使用不同的数据库(使用 myDB)时,我无法运行 db.runCommand。

这是我得到的:

> db.runCommand({createIndexes: "C_Cache", indexes: [{key: {tags: 1}, name: "tags_1"}]})
{
    "ok" : 0,
    "errmsg" : "not authorized on myDB to execute command { createIndexes: \"C_Cache\", indexes: [ { key: { tags: 1.0 }, name: \"tags_1\" } ] }",
    "code" : 13
}

当我在配置文件中注释“auth”时,一切正常。但这不是我想要的。我需要那种身份验证方法。


编辑:

我只是误解了“userAdminAnyDatabase”的含义,这并不赋予您修改其他数据库的权利。为此,它似乎需要角色“root”来适应超级用户角色

4

1 回答 1

4

当使用 --auth 选项打开 Mongod 实例时,这意味着您的数据库已通过身份验证。但是,与 db 的连接是在没有任何身份验证的情况下建立的,但是您无法执行任何操作,因为它会在您的描述中引发错误,因为您没有经过身份验证。现在切换到经过身份验证的数据库,然后使用执行身份验证

db.auth( username, password ) 现在您可能被授权在 db 上执行授权操作。

于 2015-09-10T13:33:48.697 回答