在仲裁器上更改 mongo 管理员密码

change mongo admin password on an arbiter

我有一个 mongoDB replicaSet,它有 3 个 DB - PRIMARY/SECONDARY + Arbiter。 所有 3 个都以相同的方式安装 - 这意味着它们具有带默认密码的管理数据库。

现在 - 我想更改默认密码。在 primary/secondary 上运行良好。

mongo admin -u admin -p <password> --authenticationDatabase=admin
db.changeUserPassword("admin",<new password>)

但是 - 在仲裁器中它不起作用(即使在 PRIMARY 中添加 rs.slaveOK() 之后)

我得到:

2016-12-01T00:18:51.408-0800 E QUERY    [thread1] Error: Updating user failed: not master :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/shell/db.js:1319:15
DB.prototype.changeUserPassword@src/mongo/shell/db.js:1323:9
@(shell):1:1

知道如何更改仲裁管理员密码吗?

如果您的副本集设置正确,用户将在 creating/updating 主节点上的用户之后传播到集群的其余部分。

您可以通过登录其中一个辅助设备并执行

来检查这一点
>use admin
>db.system.users.find();

至于仲裁器,它不应该存储任何数据,因此它没有管理数据库来存储用户:

rs01:ARBITER> rs.slaveOk()
rs01:ARBITER> use admin
switched to db admin
rs01:ARBITER> show collections
rs01:ARBITER>