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

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

概述我们知道,MongoDB的Oplog (operations log)记录了用户的最近一段时间的 *** 作(时间长短主要受设置的oplogSize和程序的写入更新量的影响)。那么,如果其他部门(例

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

 

总结

以上是内存溢出为你收集整理的MongoDB 在系统数据库local上无法创建用户的解决方法全部内容,希望文章能够帮你解决MongoDB 在系统数据库local上无法创建用户的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存