MongoClientURI connectionString = new MongoClientURI("mongodb://root:****@dds-bp114e3f1fc441342.mongodb.rds.aliyuncs.com:3717,dds-bp114e3f1fc441341.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-677201"); // ****替换为root密码
MongoClient client = new MongoClient(connectionString);
MongoDatabase database = client.getDatabase("mydb");
MongoCollection collection = database.getCollection("mycoll");

一 基础
    1 mongodb本身启动是无认证的,是不安全的。
    2 mongodb的版本是3.X,3.X以前的版本授权方式不一样,请注意
    3 mongodb开启验证是需要消耗资源的,这点对于短链接尤为明显
二 验证机制
   1 MONGODB-CR v3.0以下 
   2 SCRAM-SHA-1 v3.0以上mongodb
三 研发建立模型
   一个spring 建立链接示例 
    spring.data.mongodb.uri=mongodb://root(userName):root(password)@localhost(ip地址):27017(端口号)/gis(collections/数据库)?authSource=admin&authMechanism=SCRAM-SHA-1
四 如何创建用户认证
   1 mongodb启动参数添加auth
   2 函数介绍 
     1 函数 createUser 
       db.createUser( 
       {
      user: "username",
      pwd: "password",
      roles: [ { role: "role", db: "dbname" }, { role: "role", db: "dbname" },{ role: "role", db: "dbname" }]。
  3 Built-In Roles(内置常用角色):
     read:允许用户读取指定数据库 //必须切换到指定库建立
     readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 
     readwrite:允许用户读写指定数据库 //必须切换到指定库建立
     readwriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
     root:只在admin数据库中可用。超级账号,超级权限 // DBA账号
五 常用命令
   背景 root用户 admin下进行
   1 db.system.users.find().pretty();//查看所有用户
   2 db.system.users.remove({user:""});//从当前数据库删除指定用户
   3 db.removeUser(username);//删除指定用户,对于所有DB
六 分批存储用户
  1 对于 mongos集群,用户存储在全局admin库中
  2 对于 副本集集群,用户存储在各自primary的admin库中
    请记住,这两者之间的用户是不一样的

七  用户验证相关问题

1 hive抽取验证集群相关问题
   1 需要指定config库只读 
     db.createUser({user:"XXX",pwd:"XX",roles:[{"role":"read","db":"ZZ"},{"role":"read","db":"config"}]})
   2 添加MongoDB的SplitVector命令实现并发数据迁移,授权给该用户
    添加角色:
    db.createRole({role: "hadoopSplitVector",privileges: [{resource: {db: "dbname",collection: "collection"},actions: ["splitVector"]}],roles:[]})
    //这里要注意,如果需要多个集合,都需要指出
  3 进行user更新
     db.updateUser("xxx",{roles: [{role:"read",db:"dbname"},{"role":"read","db":"config"},{role:"hadoopSplitVector", db:"dbname"}]})
2 无法通过mongos创建用户
   报错 Error: couldn't add user: mongos specified a different config database string : stored 
   解决办法: 这时config三点已经处于不一致状态,需要同步config数据

3 对于 SCRAM-SHA-1 引起的性能消耗问题

分析 对于验证导致性能消耗问题比较严重的大多在于PHP的场景,频繁短链接的断开与建立,每次都需要验证,验证消耗性能

解决办法:

1   client : authMechanism='MONGODB-CR'(未验证)

2   采用连接池 或者去掉短链接

转载于:https://www.cnblogs.com/williamjie/p/11454058.html

mongodb 系列 ~ mongo 用户验证系列相关推荐

  1. MongoDB 3.0 用户验证问题

    添加用户验证 修改验证方式 创建系统管理员 创建数据库管理员 测试 mongodbconf 启动 测试 实战流程 Spring配置 由于16年底公司数据库被黑之后,研究了下mongo鉴权,给数据库加上 ...

  2. Silverlight实例教程 - Validation验证系列汇总

    转自http://www.cnblogs.com/jv9/archive/2010/09/27/1836394.html Silverlight Validation验证系列教程,详细讲解Silver ...

  3. Flask扩展系列(八)–用户会话管理

    安装和启用 遵循标准的Flask扩展安装和启用方式,先通过pip来安装扩展: $ pip install Flask-Login 接下来创建扩展对象实例: 1 2 3 4 5 from flask i ...

  4. 敏捷开发用户故事系列之四:优先级排序

    这是敏捷开发用户故事系列的第四篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 优先级排序听起来是一个很简单的工作,一个字段无外乎"重要/一般--",调整一下然后按排序 ...

  5. 破解索尼PS4系列:用户代码执行(二)

    本文讲的是破解索尼PS4系列:用户代码执行(二), 本文会重点讲解如何在WebKit进程中进行代码执行. 代码执行 正如上一篇文章讲过的那样,ROP只是以一种聪明的方式执行内存中加载的现有代码,而RO ...

  6. 敏捷开发用户故事系列之二:如何面向客户价值编写故事

    这是敏捷开发用户故事系列的第二篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 敏捷开发中的用户故事采用的语法模式看似简单,却蕴含着深刻的思想. "作为一个--,可以--,以(以 ...

  7. 敏捷开发用户故事系列之一:何为用户故事

    这是敏捷开发用户故事系列的第一篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 全系列将涉及何为用户故事,面向客户价值编写故事,用户建模,产品待开发项的分类,故事颗粒度,故事的组织结构,等 ...

  8. 敏捷开发用户故事系列之五:用户故事的分类

    这是敏捷开发用户故事系列的第五篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 引子 在之一.之二.之三中,我们曾经提到了"作为一个--可以--以便--"的用户故事描述 ...

  9. 敏捷开发用户故事系列之三:用户建模

    这是敏捷开发用户故事系列的第三篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 用户建模的目的,是为了更好地分析用户行为和用户价值,并因此获得商机. 用户建模四部曲 有一次培训中,分组建模 ...

最新文章

  1. Android App优化之延长电池续航时间
  2. java 行为模式_java – 模式匹配行为
  3. 数据蒋堂 | 数据分布背后的逻辑
  4. 数据结构与算法详解目录
  5. c++STL容器的Deque
  6. java同步锁如何使用_java 同步锁(synchronized)的正确使用姿势
  7. es6 TypedArray视图
  8. 智能搜索推荐模型预估框架的建设及在美团点评的实践
  9. android java调用c_Android JNI简单实例(android 调用C/C++代码)
  10. 21-python-time,random模块的应用
  11. Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准
  12. 【verilog教程】第9篇:verilog常见问题合集
  13. Tess4j的使用(识别中文)
  14. PS初学者(非设计专业人士)的碎碎念
  15. Git对G码云上项目的上传及同步
  16. KY-RTI分布仿真技术:第八章 Visual C#程序设计
  17. matlab2019b重装导致mjs安装失败问题解决
  18. valgrind安装及使用
  19. PAT基础级-黄金段位样卷1
  20. switch-case的使用

热门文章

  1. caffe MNIST官方文档中文版
  2. 快速判断二叉树先序遍历 后序遍历
  3. __mmc_claim_host
  4. react封装函数_React 模式-将函数作为 children 传入和 render prop - 极客教程
  5. dpdk开发快速入门
  6. Linux内核调试原理和工具介绍--理解静态插装/动态插装、tracepoint、ftrace、kprobe、SystemTap、Perf、eBPF
  7. MySQL深度剖析之Buffer Pool专题(2021)
  8. 怎么将文件转换成linux文件,你如何在linux中创建一个将文件转换为大写...
  9. (19)System Verilog利用clocking块产生输入信号延迟激励
  10. FPGA 常用存储器比较