本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), MongoDb分片集群认证几个主要流程

1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFile认证,集群所有mongod和mongos实例使用内容相同的keyFile文件
(1)在其中一台机器上生成keyfile

openssl rand -base64 753  > keyfile
sudo chmod 400 keyfile

(2)将keyfile放置在<path-to-keyfilie>路径

2.建立管理员账号,赋所有权限(admin和config数据库)

use admin
db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有权限
db.auth("admin","123456")use config
db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有权限
db.auth("admin","123456")

3.关闭所有mongod、mongos、configsvr,编辑配置文件,重新启动每台服务器每个实例

为每一个mongod、mongos、配置服务器的实例其中的配置文件添加认证属性或者在启动实例时添加--authorization、--keyFile选项

[mongo@mongo3 ~]$ vi services/configsvr/mongod.conf

#mongod.conf 添加以下配置
security:authorization: enabled  #若启动实例报错,可删除该行keyFile: /home/mongo/services/keyfile

[mongo@mongo3 ~]$ ./mongod -f services/configsvr/mongod.conf 

其他实例如下

[mongo@mongo3 ~]$ vi services/shard1/mongod.conf#mongod.conf 添加以下配置
security:authorization: enabled  #若启动实例报错,可删除该行keyFile: /home/mongo/services/keyfile[mongo@mongo3 ~]$ ./mongod -f services/shard1/mongod.conf[mongo@mongo1 ~]$ vi services/shard2/mongod.conf#mongod.conf 添加以下配置
security:authorization: enabled  #若启动实例报错,可删除该行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard2/mongod.conf[mongo@mongo1 ~]$ vi services/shard3/mongod.conf#mongod.conf 添加以下配置
security:authorization: enabled  #若启动实例报错,可删除该行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard3/mongod.conf[mongo@mongo2 ~]$ vi services/mongos/mongos.conf#mongod.conf 添加以下配置
security:authorization: enabled  #若启动实例报错,可删除该行keyFile: /home/mongo/services/keyfile[mongo@mongo2 ~]$ ./mongos -f services/mongos/mongos.conf

4.admin连接mongo集群

[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/admin -u admin -p 123456

5.为指定数据库添加访问用户,本文为testShard数据库

use testShard
db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite", db:"testShard"} #读写权限]}
)
db.auth("test","test")

6.test访问mongo集群,只有testShard的数据读写权限

[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/testShard -u test -p test
MongoDB shell version v4.0.3
connecting to: mongodb://172.16.0.192:27017/testShard
Implicit session: session { "id" : UUID("e0f8bf3f-83d7-432c-ba4c-c063d865380e") }
MongoDB server version: 4.0.3

用户和角色方法
详细参见官方文档:
https://docs.mongodb.com/manual/reference/method/#role-management

查看角色信息
use admin
db.getRole("rolename",{showPrivileges:true})

删除角色
use admin
db.dropRole("rolename")

系统内置用户角色
大部分内置的角色对所有数据库共用,少部分仅对admin生效

数据库用户类

read
非系统集合有查询权限

readWrite
非系统集合有查询和修改权限

数据库管理类

dbAdmin
数据库管理相关,比如索引管理,schema管理,统计收集等,不包括用户和角色管理

dbOwner
提供数据库管理,读写权限,用户和角色管理相关功能

userAdmin
提供数据库用户和角色管理相关功能

集群管理类

clusterAdmin
提供最大集群管理权限

clusterManager
提供集群管理和监控权限

clusterMonitor
提供对监控工具只读权限

hostManager
提供监控和管理severs权限

备份和恢复类

backup
提供数据库备份权限
restore
提供数据恢复权限

All-Database类

readAnyDatabase
提供读取所有数据库的权限除了local和config数据库之外

readWriteAnyDatabase
和readAnyDatabase一样,除了增加了写权限

userAdminAnyDatabase
管理用户所有数据库权限,单个数据库权限和userAdmin角色一样

dbAdminAnyDatabase
提供所有用户管理权限,除了local,config

超级用户类

root
数据库所有权限

内部角色

__system
提供数据库所有对象任何操作的权限,不能分配给用户,非常危险

转载于:https://www.cnblogs.com/woxingwoxue/p/9888897.html

MongoDb分片集群认证相关推荐

  1. 实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)

    MongoDB 分片集群搭建(分片集群安全认证+SpringBoot访问) 一.搭建要求 一台路由节点 IP地址:192.168.80.110 端口:11111 三套复制集(每个分片节点中的复制集 都 ...

  2. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  3. mongodb 启动_精心总结--mongodb分片集群启动与关闭

    概述 网上教程有点坑啊,很多bug,今天刚好涉及到所以抽空整理了下mongodb分片集群启动与关闭方面的教程.希望对大家有点帮助. 基础环境配置 192.168.240.145 测试Nosql服务器1 ...

  4. DOCKER-COMPOSE搭建MONGODB分片集群(单机版)

    docker-compose搭建mongodb分片集群(单机版) - 丰哥坑到 - 博客园

  5. MongoDB——MongoDB分片集群(Sharded Cluster)两种搭建方式

    MongoDB分片集群(Sharded Cluster)两种搭建方式 MongoDB分片的概念 分片集群包含的组件 分片集群架构目标 MongoDB分片集群搭建 第一套副本集 第二套副本集 配置节点副 ...

  6. 2021-05-12 MongoDB面试题 什么是MongoDB分片集群

    什么是MongoDB分片集群? Sharding cluster是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建.sharding分片很好的解决了单台服务器磁盘空 ...

  7. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  8. mongodb分片集群突然停电造成一些错误,分片无法启动

    今天突然停电使mongodb分片集群造成这种错误,暂时不知道怎么解决,如果 有人知道请回复我 ,现在把记录下来,等后期处理. Fri Aug  8 10:49:52.165 [initandliste ...

  9. mongodb 分片集群安装 -- 二进制文件安装

    一.安装前准备 机器分配: 三台机器 A :192.168.19.101 B: 192.168.19.102 C: 192.168.19.103 A机器:mongos .config server.s ...

最新文章

  1. HTTP/2 h2 协议简介
  2. java静态方法和非静态方法内存区别_static方法和非static方法的区别(java)
  3. Android开发中遇到的bug
  4. 成功解决xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b‘Debug is
  5. C语言及程序设计初步例程-33 三种循环语句
  6. 1000 驱动_华为海思自研OLED驱动芯片已流片:最高28nm、可完全去美化
  7. python数据统计代码_Python 数据的累加与统计的示例代码
  8. 【Ubuntu-Opencv】Ubuntu14.04 Opencv3.3.0 安装配置及测试
  9. 快速向服务器传文件格式,客户端如何向服务器传文件格式
  10. 交换机接口用了那几根线_交换机接口知识大全!网络从业者必懂!
  11. iOS - Animation 八种方法
  12. vestacp升级php,升级VestaCP面板PHP版本至PHP7.x
  13. 怎么使用Vegas制作炫彩灯光效果?
  14. 计算机网络实验教程钱德沛_计算机网络实验教程完成版.pdf
  15. 城头土命适合做计算机电脑职业,土命人适合的职业
  16. 逍遥叹歌词--《仙剑奇侠传》
  17. 重装电脑麻烦,但值得
  18. 腾讯QQ 类企业QQ在线代码!
  19. 对IQueryable和IEnumerable的认识
  20. 使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误

热门文章

  1. ARM汇编基础详解(PS学习汇编的原因)
  2. g++ linux 编译开栈_方舟编译器编译hello world踩坑全记录
  3. Java中lombok @Builder注解使用详解
  4. Git使用命令行回退版本git reset --hard
  5. java双层for循环
  6. 通过福禄克LinkIQ网络电缆测试仪排除 VLAN 故障
  7. java ranger rest_kafka ranger integration issuse
  8. Java技术:SpringBoot集成FreeMarker生成word文件
  9. 程序员漫画:别人眼中的程序员vs真实的程序员
  10. 系统测试相关知识笔记