MongoDB 具有简单密码验证的副本集

MongoDB replica set with simple password authentication

我有一个包含 3 个服务器的 MongoDB 副本集(1 个主服务器、1 个辅助服务器、1 个仲裁服务器;这是 Google Cloud 一键安装创建的默认副本集)。主服务器和辅助服务器的 2 个配置文件 (mongod.conf) 已更改,添加了 security.authorization: enabled

使用以下 MongoDB shell 命令添加根用户:

use admin
db.createUser({user:"root",pwd:"root",roles:["root"]})

使用“sudo service mongod restart”在主服务器和辅助服务器上重启MongoDB服务后,与副本集的连接变得不稳定。

rs.status() 有时给出的结果为

如何正确设置 MongoDB 副本集的基本密码验证(不使用密钥文件)?

我终于找到了答案。 MongoDB 副本集需要用户帐户和密钥文件。密钥文件似乎是用于副本集中服务器之间的身份验证,而不是用于登录。

在 linux 上创建 mongodb 密钥文件,复制到所有模式为 600 完整的数据库服务器:

cd
openssl rand -base64 741 > mongodb.key
chmod 600 mongodb.key

mongod.conf 文件:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/USERNAME/mongodb.key

管理员用户:

(just like in question content)