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

栏目: 数据库 · 发布时间: 6年前

内容简介:我们知道,MongoDB的Oplog (operations log)记录了用户的最近一段时间的操作(时间长短主要受设置的oplogSize和程序的写入更新量的影响)。那么,如果其他部门(例如BI团队)需要抽取数据,从oplog位于local数据下面,为了将权限最小化,大家需要创建此库的权限(还可以将权限细化到集合,再次不讨论)。习惯性的,在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数据库下面创建账号

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

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

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

此时可以创建成功。

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

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

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

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

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

登入成功

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

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


以上所述就是小编给大家介绍的《MongoDB 在系统数据库local上无法创建用户的解决方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

智能革命

智能革命

李彦宏 等 / 中信出版集团 / 2017-5-1 / 68.00元

人类历史上的历次技术革命,都带来了人类感知和认知能力的不断提升,从而使人类知道更多,做到更多,体验更多。以此为标准,李彦宏在本书中将人工智能定义为堪比任何一次技术革命的伟大变革,并且明确提出,在技术与人的关系上,智能革命不同于前几次技术革命,不是人去适应机器,而是机器主动来学习和适应人类,并同人类一起学习和创新这个世界。“人工智能”正式写入2017年政府工作报告,折射出未来人工智能产业在我国经济发......一起来看看 《智能革命》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试