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. conda opencv cv2.imshow无法使用

    error: -------src-dir-------/opencv-2.4.10/modules/highgui/src/window.cpp:501: error: (-2) The funct ...

  2. C#写日志工具类

    代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...

  3. MySQL入门——在Windows下安装MySQL

    MySQL入门——在Windows下安装MySQL 摘要:本文主要说明了如何下Windows环境下安装MySQL. 查看电脑上是否安装了MySQL 打开cmd窗口,输入 services.msc 命令 ...

  4. Android App压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  5. Flask--g属性

    目录 Flask之g属性 使用 session,flash,g的区别 Flask之g属性 专门用来存储用户信息的g对象,g的全称的为global g对象在一次请求中的所有的代码的地方,都是可以使用的 ...

  6. 设计模式之(十)装饰模式(DECORATOR)

    在购买了一个房子后,如果是毛坯房,肯定不合适直接入住的.需要对它进行装修:地面找平贴地砖.批墙贴墙纸.吊顶装订以及买需要的家具,住进去以后也可能根据需要再添加或者去掉一些家具或者修改一些东西.所以的这 ...

  7. 怎么进入bios设置界面,电脑如何进入BIOS进行设置,怎么进入BIOS的方法集合

    怎么进入bios设置界面,电脑如何进入BIOS进行设置,怎么进入BIOS的方法集合 开机出现电脑商家图标时,按住F10键进入BIOS界面.进入BIOS界面一般都是开机后按<del,Esc,F1, ...

  8. css中的baseline

    这是css中的一个容易被人忽略的概念,今天在知乎上看到一个问题,这个问题应该是关于baseline,才去补习了一下关于baseline的知识,首先我来还原一下问题: <div style=&qu ...

  9. FCC-学习笔记 Convert HTML Entities

    FCC-学习笔记  Convert HTML Entities 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecode ...

  10. maven 学习---Maven快照

    大型软件应用程序通常由多个模块组成,这是多个团队工作于同一应用程序的不同模块的常见场景.例如一个团队工作负责应用程序的前端应用用户接口工程(app-ui.jar:1.0)),同时他们使用数据服务工程( ...