美文网首页
MongoDB4.2.6集群添加用户认证

MongoDB4.2.6集群添加用户认证

作者: 李小二的倔强 | 来源:发表于2020-04-21 14:28 被阅读0次

没来由此去经年,总把新人换旧颜。
江山父老能容我,不使人间造孽钱。

今天主要介绍的是给集群加上用户的验证
集群配置:

主节点——172.31.129.12
从节点——172.31.129.13
仲裁节点——172.31.129.17

这里对配置文件进行一下说明:

MongoDB服务支持命令行配置参数和配置文件两种启动方式, 为便于管理, 推荐使用配置文件进行服务参数的配置. 自Mongo2.6版起, 官方推荐使用YAML格式的配置参数: MongoDB官方YAML配置文件参数说明; 旧版配置文件格式依然可用但不建议使用: .MongoDB官方旧版配置文件参数说明
我这里用的是旧版的格式,有兴趣也可以尝试yaml格式,
下面是本集群使用的配置文件mongod.conf

port=27017 #端口 
dbpath= /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/db #数据库存文件存放目录 
logpath= /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/mongodb.log #日志文件存放路径 
logappend=true #使用追加的方式写日志 
fork=true #不以守护程序的方式启用,即不在后台运行 
replSet=sdb #Replica Set的名字 集群名称 
maxConns=100 #最大同时连接数 
> #auth=true #启用验证
> #keyFile=/usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/access.key
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。 
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。 
storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks 
bind_ip = 0.0.0.0 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB

和以前的配置一样,只是加了auth和keyFile的属性,暂时先注释掉

确定你集群正常启动的状态,现在开始添加集群用户

集群配置完成后, 仍然在主节点的mongo控制台中添加三个用户:数据库管理员, 集群管理员和访问特定数据库的用户.
在一个节点执行就可以

#在bin目录下
#进入mongo控制台
./mongo 172.31.129.12  

#使用内置的admin库   
> use admin                
> db.createUser({user:"admin",pwd:"admin",roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]})

 #创建集群管理员
> db.createUser({user:"cluster",pwd:"cluster",roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]})

 #切换到pid数据库,不用事先创建
> use pid                
> db.createUser({user:"pid21",pwd:"pid21@cnic",roles:[{role:"readWrite",db:"pid"},{role:"dbAdmin",db:"pid"},{role:"userAdmin",db:"pid"}]})

 #查看创建的用户
> use admin
> db.system.users.find()    
  • MongoDB的用户和数据库是绑定的, 必须指定某个用户归属于哪个数据库, 即在roles字段的每个role中指定db字段.

  • 数据库管理员通常需要具有读写,管理任意数据库和管理任意用户的role, 后续可以登录此用户进行数据库和用户的增删改查.

  • 集群管理员通常需要具有集群管理和集群监控的role, 只有集群管理员可以关闭集群.

  • 普通用户根据用途不同可以对特定或者多个数据库拥有各种不同的role, 本例中的pid21用户既可以读写pid库, 同时也是pid库的管理员.

  • 主节点上添加的用户应该能够在从节点上查询到(需要先键入rs.slaveOk()命令).

开启用户认证

用户添加完成后需要关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换)

生成keyFile(keyFile的用途是作为所有mongod后台进程允许加入集群的凭证, 所有集群中的节点共用一个keyFile, 避免其他mongod加入集群)
在一个节点执行
#生成keyFile, keyFile的长度必须在6-1024个字符之间
openssl rand -base64 756 >  /usr/local/pid/access.key
#keyFile文件权限为只读     
chmod 400 /usr/local/pid/access.key
#用scp将keyFile复制到其他服务器    
scp /usr/local/pid/access.key root@172.31.129.13:/usr/local/pid
scp /usr/local/pid/access.key root@172.31.129.17:/usr/local/pid  

取消三个节点上的auth和keyFile的注释(用户进行认证是要把noauth属性删除):
依次启动主节点, 从节点和仲裁节点
在配置文件中修改:

spring:
  data:
    mongodb:
      uri: mongodb://admin:admin@172.31.129.12:27017,172.31.129.13:27017/pid?replicaSet=sdb&slaveOk=true&readPreference=secondaryPreferred

相关文章

  • MongoDB4.2.6集群添加用户认证

    没来由此去经年,总把新人换旧颜。江山父老能容我,不使人间造孽钱。 今天主要介绍的是给集群加上用户的验证 集群配置:...

  • 【MongoDB-常见操作指令】

    连接到MongoDB实例 添加用户 -副本集打开安全认证前,添加管理员和集群管理员的命令 -添加读写权限用户 -查...

  • opentsdb过kerberos认证

    opentsdb是依赖hbase做数据落地的,当集群添加认证组件后就需要对opentsdb添加通过集群认证的模块。...

  • mongodb

    批量插入数据 查看 创建用户 集群认证

  • Kafka添加ACL认证

    Kafka添加Acl认证 一、Kafka安装 如果设置此参数在集群状态下启动会失败 超级用户 2. 修改Kafka...

  • mongo(十八:安全架构)

    MongoBD安全架构:认证鉴权审计加密 MongoDB 用户认证方式 MongoDB 集群节点认证 传输加密 落...

  • 管理ElasticSearch集群

    集群身份认证与用户鉴权 如何为集群启用X-Pack Security 如何为内置用户设置密码 设置 Kibana与...

  • Flink1.8 集群搭建完全指南(2):Kerberos的安装

    Flink要求它使用的Hadoop集群必须是要添加Kerberos和SASL认证的,本节先介绍Kerberos认证...

  • Nginx 配置用户登录

    安装 htpasswd 工具 创建认证用户 添加新用户 添加Nginx配置 重启Nginx生效

  • Phoenix连接安全模式下的HBase集群

    Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无...

网友评论

      本文标题:MongoDB4.2.6集群添加用户认证

      本文链接:https://www.haomeiwen.com/subject/hbuuihtx.html