• MongoDB 在系统数据库local上无法创建用户的解决方法


    我们知道,MongoDB的Oplog (operations log)记录了用户的最近一段时间的操作(时间长短主要受设置的oplogSize和程序的写入更新量的影响)。那么,如果其他部门(例如BI团队)需要抽取数据,从 local.oplog.rs中读取解析一个不错的选择。

    oplog位于local数据下面,为了将权限最小化,大家需要创建此库的权限(还可以将权限细化到集合,再次不讨论)。

    习惯性的,在local数据库下面创建,但是报错了。

    执行脚本 


    db.createUser(
    {
    user: "testuser_local",
    pwd: "testuser_local",
    roles: [ { role: "read", db: "local" } ]
    }
    )

    报错信息

    2018-XX-XXT14:48:30.437+0800 E QUERY [thread1] Error: couldn't add user: Cannot create users in the local database :
    _getErrorWithCode@src/mongo/shell/utils.js:25:13
    DB.prototype.createUser@src/mongo/shell/db.js:1290:15
    @(shell):1:1

     

    查看mongoDB的官网介绍,发现确实不可以在local数据库下面创建账号

    其解决方案是,我们转到admin数据库下面,创建账号。

     此时可以创建成功。

    注意:(1)在程序端配置连接字符串时,相应的需要添加登入验证数据库参数 --authenticationDatabase admin

       (2)通过NoSQLBooster登入时,Auth DB 选择执行创建命令的数据库名字(本实例为admin)

     Default Database 的编辑项,选择oplog所在的local数据库

    登入成功

    (但是在测试过程中,发现此工具在这个小权限下,登入可以成功,但是有时候执行命令时报错,而通过 MongoDB shell 执行不报错。还需探究根本原因)

    (3) 建议数据的拉取,在辅助节点上拉取,减少主库的压力。

  • 相关阅读:
    UVA 1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)
    UVA 1572 Self-Assembly(拓扑排序)
    最大流当前弧优化Dinic分层模板
    POJ 3683.Priest John's Busiest Day 2-SAT
    n的m划分 整数拆分问题
    表达式计算
    大白书中无向图的点双联通分量(BCC)模板的分析与理解
    Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分
    树状数组入门
    Tire树入门专题
  • 原文地址:https://www.cnblogs.com/xuliuzai/p/9970125.html
Copyright © 2020-2023  润新知