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   采用连接池 或者去掉短链接

 
 

mongodb 系列 ~ mongo 用户验证系列的更多相关文章

  1. MongoDB系列:四、spring整合mongodb,带用户验证

    在前面的两篇博客 MongoDB常用操作练习.springboot整合mongoDB的简单demo中,我们基本上熟悉了mongodb,也把它与spring boot进行了整合并且简单使用.在本篇博客中 ...

  2. C# 连接MongoDB,含用户验证

    配置文件中链接地址:mongodb://test:123456@192.168.168.186:9999/temp 读取配置文件: /// <summary> /// 构造函数 /// & ...

  3. MongoDB用户验证和权限管理

    官方参考页面: https://docs.mongodb.com/v3.6/tutorial/enable-authentication/ https://docs.mongodb.com/v3.6/ ...

  4. mongdb3.0用户验证问题

    1.  用户验证方式更改: Mongodb2.6的默认用户验证方式是:MONGODB-CR Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1 因为新的验证方式在spring和java中 ...

  5. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  8. Mongodb分片集群技术+用户验证

    随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,“分片”就用这个来解决这个问题. 从图中可以看到有四个组件:mongos.config server. ...

  9. windows系统,MongoDB开启用户验证登录的正确姿势

    MongoDB默认安装并没有开启用户名密码登录,这样太不安全了,百度出来的开启验证登录的文章,对初次使用MongoDB的小白太不友好了,总结下经验,自己写一份指引. 1,我的安装路径是C:\Progr ...

随机推荐

  1. 利用 Javascript 让 DIV 自适应屏幕的分辨率,从而决定是否显示滚动条

    直接贴代码了: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  2. WPF 3D相机基本坐标简介

    基本概念 WPF中3D空间基本坐标系是右手坐标系. WPF中3D空间的原点是(0,0,0) Position: 这个参数用来表示相机在空间内的坐标.参数是(X,Y,Z).当修改相机的这个参数时,这个坐 ...

  3. C#学习之委托与事件

    委托 语法:  public  delegate void MyDelegate(); 使用:  1.定义委托----public  delegate void MyDelegate(); 2.注册委 ...

  4. CentOS7/Ubuntu18系统时间同步ntp(转载)

    转自  https://blog.csdn.net/u010226454/article/details/80896959 ---centos7.2上搭建ntp服务器,并实现时间同步 对于容器编排系统 ...

  5. Scrapy 运行多个爬虫

    本文所使用的 Scrapy 版本:Scrapy==1.8.0 一个 Scrapy 项目下可能会有多个爬虫,本文陈述两种情况: 多个爬虫 所有爬虫 显然,这两种情况并不一定是等同的.假设当前项目下有 3 ...

  6. C 函数声明、函数参数

    参考连接:https://www.runoob.com/cprogramming/c-functions.html 局部变量与全局变量在内存中的储存方式 全局变量保存在内存中的全局储存区中,占用静态的 ...

  7. 350道面试题分享,拿下京东offer工资double

    350道面试题分享,拿下京东offer工资double 前言: 面试,其实是一个双向选择的过程,在这个过程里,我们不应该抱着畏惧的心态去对待,这样反而会影响自己的发挥.同时看中的应该不止薪资,还要看你 ...

  8. 二叉搜索树(BST)基本操作

    什么是二叉搜索树? 二叉搜索树也叫做二叉排序树.二叉查找树,它有以下性质: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值: 若任意节点的右子树不空,则右子树上所有节点的值均大于它 ...

  9. 简单的基于promise的ajax封装

    基于promise的ajax封装 //调用方式: /* ajaxPrmomise({ url:, method:, headers:{} }).then(res=>{}) */ ;(functi ...

  10. v8/src/compilation-statistics.cc pdfium编译

    v8/src/compilation-statistics.cc:18:3: 警告:‘auto’ changes meaning in C++11; please remove it [-Wc++0x ...