MongoDB激活身份验证将副本设置为OTHER

时间:2019-10-07 15:00:15

标签: mongodb replicaset

从今年年初开始,我就一起使用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文件中的更改之前,这基本上保持不变。

所以搜索之后,我在这里问这是否发生在以前的任何人身上?

如果没有,关于该问题我能得到什么建议?

1 个答案:

答案 0 :(得分:0)

我实际上发现了正在发生的事情。

由于使用了副本集,因此身份验证需要一个文件,副本才能确认用户及其权限(据我所知)

您可以在此处找到详细信息:MongoDB replica set with simple password authentication

(我刚刚发现3年前的答案是cc @datdinhquoc)