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

标签 mongodb authentication replicaset database nosql

我有一个 MongoDB 副本集,其中包含 3 个服务器(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() 有时会给出结果

  • 1 个主节点、1 个不可达节点、1 个仲裁节点
  • 1 个辅助,1 个辅助,1 个仲裁器
  • 1 个辅助节点、1 个不可达节点、1 个仲裁节点

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

最佳答案

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

在linux上创建mongodb key 文件,复制到所有模式600完整的db服务器:

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)

关于具有简单密码认证的 MongoDB 副本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524150/

相关文章:

mongodb - MongoRestore 花费的时间和 CPU 比预期的要多

javascript - 如何根据字段是否存在对MongoDB集合进行排序

php - 使用带有 php 的 Windows 身份验证?

authentication - Google "OpenID Connect"和 "sign-in with Google"之间的区别?

mongodb - MongoDB 副本集状态未从 Startup 更改为 Secondary

mongodb - 如何在docker-compose中运行具有不同端口的多个MongoDB?

python - Pymongo 读取比 mongo 客户端(robomongo)慢得多

php - token 身份验证 - token 的存储位置

mysql - 拥有与节点一样多的Pod

通过 docker 脚本使用身份验证创建 Mongodb 副本集