MongoDB副本集使用简单的密码身份验证

dat*_*uoc 13 database authentication mongodb nosql replicaset

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

Root用户添加了以下MongoDB shell命令:

use admin
db.createUser({user:"root",pwd:"root",roles:["root"]})
Run Code Online (Sandbox Code Playgroud)

使用"sudo service mongod restart"在主服务器和辅助服务器上重新启动MongoDB服务后,与副本集的连接将变为不稳定.

rs.status()有时会给出结果

  • 1个主要,1个无法访问,1个仲裁
  • 1个中学,1个中学,1个仲裁者
  • 1个辅助,1个无法访问,1个仲裁

如何设置基本密码认证(不使用密钥文件)为MongoDB副本设置正确的方法?

dat*_*uoc 10

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

在linux上创建mongodb密钥文件:

cd
openssl rand -base64 741 > mongodb.key
chmod 600 mongodb.key
Run Code Online (Sandbox Code Playgroud)

mongod.conf文件:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/USERNAME/mongodb.key
Run Code Online (Sandbox Code Playgroud)

管理员用户:

(just like in question content)
Run Code Online (Sandbox Code Playgroud)

  • 我现在有同样的问题,我生成了密钥并将其提供给单个.conf文件,在我的情况下为4.现在当我开始没有认证的`mongod`它不能做`rs.initiate()`或创建用户.你知道为什么吗? (2认同)
  • 这有效...在生产中进行了试用和测试,感谢分享 (2认同)