MongoDB之blukwrite引发的权限问题

问题:调用blukwrite updateone报错:

error: not authorized on db_amiya to execute command { update: "operations", updates: 1000, ordered: false, bypassDocumentValidation: true, lsid: { id: UUID("30a733a4-6bae-48be-8d7f-412ec1143c15") }, $db: "db_amiya" }

解决:
1、本地调用shell blukwrite

db.getCollection('operations').bulkWrite(
[
{
updateOne: {
filter: { createrName: 'Adminx' },
update: { $set: {descAfter: 'aaax1'} },
upsert: false
}
},
{
updateOne: {
filter: { createrName: 'Adminy' },
update: { $set: {descAfter: 'aaay2'} },
upsert: false
}
}
],
{ order: false}
);

2、本地demo复现报错

requests = [
           InsertOne({ "user_name":"user0003"}),
           UpdateOne({ "user_name":"user0003"},{"$set":{"user_name": "000000000"}})
           ]
result = mycollection.bulk_write(requests,ordered=True,bypass_document_validation=True)
 
########报错
pymongo.errors.OperationFailure: not authorized on test to execute command { insert: "log", ordered: true, bypassDocumentValidation: true, lsid: { id: UUID("eaff0502-c60c-4d96-b31e-ab4ecb62c8e8") }, $db: "test" }, full error: {'ok': 0.0, 'errmsg': 'not authorized on test to execute command { insert: "log", ordered: true, bypassDocumentValidation: true, lsid: { id: UUID("eaff0502-c60c-4d96-b31e-ab4ecb62c8e8") }, $db: "test" }', 'code': 13, 'codeName': 'Unauthorized'}

原因解释:bypass_document_validation=True

Mongodb3.2提供了在插入和更新时验证文档的功能。每个集合都是基于使用validator选项来指定验证规则的。该验证器选项是给文档指定验证规则或表达式,在操作文档是必须满足验证器规则才能成功。

由于代码指定bypass_document_validation=True需要dbAdmin和restore这两个角色权限;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端...
    散入风中阅读 5,086评论 0 3
  • Mongodb 配置选项 通常在mongod.conf中 配置文件 设置了配置文件后启动时以自定义的配置文件启动:...
    AkaTBS阅读 4,707评论 0 6
  • web开发中所遇到的问题总结 jquery miniui开发问题: 2017/3/28 当你用了Class="mi...
    白番茄_阅读 10,526评论 0 1
  • 数据库概念 数据库介绍 存储数据的仓库,独立于语言之外的软件,可以通过api去操作它 生活中通过仓库来存放物品,每...
    香蕉丶阅读 1,891评论 0 0
  • 1. 简介 数据库分类(1)关系型数据库,是指采用了关系模型来组织数据的数据库。关系型数据库遵循ACID规则。(2...
    nimw阅读 4,709评论 0 0