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

(编辑:jimmy 日期: 2024/12/24 浏览:2)

前言

我们知道,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) 建议数据的拉取,在辅助节点上拉取,减少主库的压力。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?