用于保护 MongoDB 的 Rocketchat 连接

Rocketchat connection to secure MongoDB

我正在尝试保护 mongodb 添加了一个具有权限的 rocketchat 用户,这是查询结果:

rs01:PRIMARY> use admin
rs01:PRIMARY> show users
{
        "_id" : "admin.rocketchatuser",
        "user" : "rocketchatuser",
        "db" : "admin",
        "customData" : {

        },
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "admin"
                },
                {
                        "role" : "readWrite",
                        "db" : "local"
                },
                {
                        "role" : "dbOwner",
                        "db" : "rocketchat"
                }
        ]
}

这是我的连接字符串:

MONGO_OPLOG_URL=mongodb://rocketchatuser:mypassword@localhost:27017/local?authSource=admin&replSet=rs01
MONGO_URL=mongodb://rocketchatuser:mypassword@localhost:27017/rocketchat?authSource=admin

这里是 mongodb 日志:

Unauthorized: not authorized on rocketchat to execute command

但仍然收到连接被拒绝的错误。

有什么想法吗?

最后,我在 this guide 中的 re-follow 指令和从 Rocket.Chat 服务启用日志记录后解决了问题,发现它需要授予 rocketuser 在 admin 上拥有角色 clusterMonitor数据库:

db.runCommand({ grantRolesToUser: "rocketchatuser" , roles: [{role: "clusterMonitor", db: "admin"}]})

授权用户后,它连接并开始 运行 成功。