mongodb - 我的只读用户可以写

标签 mongodb

我正在使用 MongoDB 3.0.7。我有一个名为 bravegoat 的数据库和一个名为 bravegoat-r 的只读用户。

我通过 shell 连接:

mongo localhost:27017/bravegoat -u bravegoat-r -p mypassword

我切换到我的数据库:

use bravegoat;

然后我跑:

db.runCommand({connectionStatus : 1})

哪些输出:

{
        "authInfo" : {
                "authenticatedUsers" : [
                        {
                                "user" : "bravegoat-r",
                                "db" : "bravegoat"
                        }
                ],
                "authenticatedUserRoles" : [
                        {
                                "role" : "read",
                                "db" : "bravegoat"
                        }
                ]
        },
        "ok" : 1
}

只有 read 角色,所以看起来不错,但是当我调用 .save() 时,我的用户可以插入数据。我已经阅读了几页有关创建只读用户的内容,但看不到我的问题。我开始认为这可能是我的版本中的错误。

最佳答案

您必须通过执行以下操作来启用客户端访问控制:

  1. 编辑/etc/mongod.conf 文件
  2. 添加以下几行

安全性: 授权:已启用

  1. 重启 MongoDB:

sudo service mongodb restart

关于mongodb - 我的只读用户可以写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948761/

相关文章:

mongodb - 配置MongoDB集群

node.js - 对 mongoose 执行 find() 时找到的每个文档执行回调

javascript - Mongoose - 所需的验证器未按功能运行

node.js - 更新子文档不起作用nodejs mongodb express

mongodb - 针对计数器字段构建索引

java - 如何在windows中使用cmd启动程序

mongodb - hasMany关系为NULL时grails对象查询

node.js - 为什么 res.render() 不能与 req.params.id 一起使用?

mongodb - 什么时候应该在 MongoDB 中设置 TTL 索引?

mongodb - 将遗留 EAV 模式转换为 Mongo 或 Couch