mongodb - MongoDB Activating Authentication 将副本设置为 OTHER
问题描述
从今年年初开始,我一直在使用 MongoDB 和 SolR。尽管这个问题是关于我最近几天在 MongoDB 上遇到的一个特定问题,但我找不到解决方法。
设置如下:2个副本集集群。(我不知道这是否自我解释,但我会让专家判断是否有更好的说法哈哈)
看,出于一些明显的最佳实践原因,我决定在我的 MongoDB 实例上启用身份验证。我按照 MongoDB 文档中描述的步骤来创建具有特定权限和所有内容的用户。
rs0:PRIMARY> db.createUser({ user: "louis", pwd: "WhatIsGod", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
Successfully added user: {
"user" : "louis",
"roles" : [
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase"
]
}
到目前为止,您可能会告诉我没有任何问题。好吧,我也这么认为!成功创建用户后,我停止了 MongoDB 服务以修改mongo.conf
文件并替换disabled
,enabled
然后重新启动服务。
服务重新启动后,我看到我的副本集处于OTHER
状态,并且在 Mongo Shell 中我几乎无能为力而不会弹出错误,而不是单个命令(下面的几个示例)
2019-10-07T16:34:16.312+0200 E QUERY [thread1] Error: not master and slaveOk=false :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
2019-10-07T16:22:15.583+0200 E QUERY [thread1] Error: Could not retrieve replica set config: {
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { replSetGetConfig: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
这基本上保持不变,直到我恢复mongo.conf
文件中的更改。
所以在搜索之后,我在这里询问是否以前发生过这种情况?
如果没有,我能得到任何关于我可以检查这个问题的建议吗?
解决方案
我实际上发现了发生了什么。
由于使用副本集,身份验证需要两个副本的文件来确认用户及其权利(据我了解)
您可以在此处找到详细信息:具有简单密码身份验证的 MongoDB 副本集
(cc @datdinhquoc 我刚刚找到的 3 年前的答案)
推荐阅读
- php - PHP/Mysqli 缓存 mysql 主机?不尊重低TTL
- excel - 在 Excel VBA 中从网站问题中解析赔率
- powershell - Powershell检查是否有任何浏览器打开了特定的url
- django - 将 i18n_patterns 与 API 一起使用的问题
- android-source - 如何在设备树中添加引导 jar 位置?
- angular - ApplicationRef.tick 与 setTimeout
- javascript - 正则表达式仅在字符出现 4 次时才查找字符
- linux - 如何创建 LIRC 配置文件?
- javascript - 如何提高浏览器中实时视频处理的性能?
- oracle - Oracle Apex 5 如何使用条件显示表中的突出显示行