MongodDB集群设置登录账号密码(增加key-file以供集群内部相互验证身份)

在部署mongodb集群的时候,有些安全性要求比较高的地方,需要启用密码验证的方式,登录mongo集群。

下面的方式是在mongodb 3.6版本的基础上,3个节点的集群里设置的。

  1. 生成集群验证key文件
  • 使用openssl生成key文件
  • 复制该key文件到每个mongodb节点对应目录
  • 在每个节点修改key文件权限为400

命令如下:

$ cd /home/memdb/mongodb/conf
$ openssl rand -base64 741 > /home/mongodb/data/mongo-keyfile
$ chmod 400 ./ mongo-keyfile
  1. 创建验证用户

在未启用验证前,创建用户:

  • 使用mongo连接mongos端口: $ bin/mongo IP:mongos port
  • 切换到admin库,创建用户:
use admin
db.createUser( {
    user: "cluster",
    pwd: "cluster",
    roles: [ { role: "clusterAdmin", db: "admin" } ]
  });
db.createUser( {
    user: "super",
    pwd: "super",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  });
use test
db.createUser(
  {
    user: "admin",
    pwd: "admin",
    roles:
    [
      {
        role: "dbOwner",
        db: "test"
      }
    ]
  }
)
  1. 增加配置文件的验证属性

Mongo.conf文件:

security:
  keyFile: "/home/mongodb/data/mongodb-keyfile"
  clusterAuthMode: "keyFile"
authorization: "enabled"

config和mongos只增加上面2个属性即可。
如果没有配置文件则在重启时,启动命令在原有的基础上加上

--auth --keyFile="/home/mongodb/data/mongodb-keyfile"
  1. 重启集群

上面完成之后,重启整个mongodb集群。
按照原来顺序启动如有错误,启动顺序可改为先重启复制集再重启主要节点

  • 先启动所有config组件
  • 再启动所有mongod组件
  • 最后启动mongos组件

版权声明:本文为qq_39187019原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。