MongoDB - 如何为用户添加findandmodify权限

9

在我的应用程序中,我使用MongoDB作为数据库,并使用Express+Mongoose处理代码。我已经向数据库添加了一个用户,并为该用户赋予了readWrite角色,现在我可以从数据库获取数据。但是当我尝试使用Express+Mongoose中的save函数插入集合时,我遇到了以下错误消息,并且我无法找到如何向用户添加findandmodify权限。

 {"name":"MongoError",
   "ok":0,
   "errmsg":"not authorized on od-database to execute  command { findandmodify: \"identitycounters\", 
   query: {
      field: \"id\",  
      model: \"Products\" },
   new: 1 , 
   remove: 0, 
   upsert: 0,
   update: { $inc: { count: 1 } } }","code":13}

请帮助我。

请分享展示数据库名称的代码片段,以及您如何调用mongoose.createConnection和如何为用户授予权限的代码。谢谢! - Amaury Medeiros
请展示您的后端代码,然后我们将帮助您解决这个问题。 - Nazmul
4个回答

1

我测试了一个拥有readWrite角色的用户来连接mongoDB,并在非系统文档上进行savefindAndModify操作,两者都能成功完成。

请确保:

  • mongoose.createConnectionmongoose.connect中输入正确的用户名和密码来连接数据库。
  • 该用户在db.system.users中存在,并且拥有readWrite角色。
  • readWrite用户只能修改所有非系统集合的数据和system.js集合中的数据。

0

或者尝试禁用授权或添加连接到数据库的用户。
添加用户到数据库的示例:

db.createUser({
   user: "admin", 
   pwd: "test", 
   roles: [ { role: "dbAdmin", db: "shop" } ] 
})

位置:

  • db:"shop" - 数据库名称
  • pwd:"test" - 数据库密码
  • user:"admin" - 连接数据库的用户,例如db.auth('admin', 'test')

0

尝试给他分配dbAdmin角色。


0
如果在findAndModify中指定了bypassDocumentValidation,则需要dbAdmin角色或具有bypassDocumentValidation权限的自定义角色。
布尔参数最好指定为truefalse,而不是01

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接