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)的主要内容,如果未能解决你的问题,请参考以下文章

解决Mongodb突然无法远程连接问题及如何在忘记密码的情况下远程备份

mongodb基本操作

mongodb 数据修改

2 mongodb设置密码登录和创建库

2 mongodb设置密码登录和创建库

我无法使用本地 Mongodb 使用 Prisma 启动项目