Mongodb Admin 无法在另一个数据库中运行命令(错误代码 13)
Posted
技术标签:
【中文标题】Mongodb Admin 无法在另一个数据库中运行命令(错误代码 13)【英文标题】:Mongodb Admin cannot runCommand in another database (error code 13) 【发布时间】:2014-07-02 16:13:12 【问题描述】:我在使用 mongoDB 时遇到了一些权限问题,我使用 auth 方法创建了一个数据库管理员,这很有效。
我可以使用我使用角色“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”来适应超级用户角色
【问题讨论】:
【参考方案1】:当使用 --auth 选项打开 Mongod 实例时,这意味着您的数据库已通过身份验证。但是,与 db 的连接是在没有任何身份验证的情况下建立的,但是您无法执行任何操作,因为它会在您的描述中引发错误,因为您没有经过身份验证。现在切换到经过身份验证的数据库,然后使用
执行身份验证db.auth(用户名、密码) 现在您可能被授权在数据库上执行授权操作。
【讨论】:
以上是关于Mongodb Admin 无法在另一个数据库中运行命令(错误代码 13)的主要内容,如果未能解决你的问题,请参考以下文章