mongodb - Mongo 授权数据库失败

标签 mongodb go mgo

我在本地主机中有一个启用了安全性的 mongo 实例。和用户如下,

db.createUser(
    {
        user: "mongouser",
        pwd: "pass",
        roles: [
            { role: "userAdminAnyDatabase", db: "admin" },
            { role: "readWriteAnyDatabase", db: "admin" },
            { role: "dbAdminAnyDatabase", db: "admin" },
            { role: "clusterAdmin", db: "admin" }
        ]
    });

我正在尝试使用 mgo 连接到名为 testDatabase 的数据库,如下所示

mongoConnectionUrl = "mongodb://mongouser:pass@localhost
 if mgoSession == nil {
    var err error
    mgoSession, err = mgo.Dial(mongoConnectionUrl)
    if err != nil {
        return nil, err
    }
}

但是运行代码时mongo日志显示如下错误

2017-09-21T12:05:46.496+0530 I ACCESS   [conn1] Unauthorized: not authorized on testDatabase to execute command { find: "metrics", filter: { type: 1 }, skip: 0 }

感谢任何帮助

最佳答案

您需要按如下方式授予对当前数据库的读/写访问权限:

db.createUser(
    {
        user: "mongouser",
        pwd: "pass",
        roles: [
            { role: "userAdminAnyDatabase", db: "admin" },
            { role: "readWriteAnyDatabase", db: "admin" },
            { role: "dbAdminAnyDatabase", db: "admin" },
            { role: "clusterAdmin", db: "admin" },
            "readWrite"
        ]
    });

关于mongodb - Mongo 授权数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46337297/

相关文章:

node.js - Mongoose 上的字符串+自动增量数

javascript - Node.js + Mongoose 中的基本建模

go - 如何将嵌套模块路径中的某些内容带入当前范围?

mongodb - 如何在golang中使用$unwind?

tcp - 基于 Mgo 的应用程序代码结构处理连接池和 tcp 超时

mongodb - mgo 正在将 objectid 设置为 objectidhex,Mongodb 似乎无法读取它

MongoDB。 db.collection.explain().find() 与 db.collection.find().explain()

MongoDB 聚合 : How to query a limited amount of "top" documents per group?

Go 函数解密

go - 如何在子目录下构建go项目的C依赖