使用mongoDB 是从2.4 版本开始的,但那时的权限管理相对比较简单。也就没有去弄这个。

现在再回头看几个版本的权限管理,看到各个版本间都在变化。

并且集群与单机也有很大的不同,

下面是以2.6版本来简单配置了一个环境进行测试。

建立一个集群环境:

config={_id:'test1',members:[{_id:0,host:'192.168.2.113:27001',priority:10},{_id:1,host:'192.168.2.113:27002',priority:8}]}}
     rs.initiate(config)

rs.addArb('192.168.2.113:27003')

配置两个用户:

use admin
    #数据库管理员
    db.createUser({user:'admin',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
    #系统管理员
    db.createUser({user:'root',pwd:'123',roles:[{role:'root',db:'admin'}]})

#test
    use test;
    db.createUser({user:'tang',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'root',db:'admin'}]});
    db.createUser({user:'test',pwd:'123456',roles:[{role:'dbAdmin',db:'test'}]})

#建立一个test 只读权限用户
    db.createUser({user:'readonly',pwd:'123456',roles:[{role:'read',db:'test'}]})

#生成对 TEST 库有读写权限的用户
    db.createUser({user:'user',pwd:'123',roles:[{role:'readWrite',db:'test'},{role:'dbAdmin',db:'test'}]})

#生成一个对所有库都有读写的用户
    use admin;

db.createUser({user:'wang',pwd:'123',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

建立一个测试库

use test

for (var i=1; i<=100; i++) {
     mid=parseInt(i/100);
     db.test.insert({_id:i,mid:mid,ts:new Date()});
         };

#论证

test1:PRIMARY>  use admin

test1:PRIMARY>  db.auth('wang','123')
    1
    test1:PRIMARY> use test
    switched to db test
    test1:PRIMARY> db.test.find()
    { "_id" : 1, "mid" : 0, "ts" : ISODate("2016-03-23T06:43:59.625Z") }
    { "_id" : 2, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.131Z") }
    { "_id" : 3, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.132Z") }

test1:PRIMARY> use MTEST
    switched to db MTEST
    test1:PRIMARY> show tables;
    app
    system.indexes
    test1:PRIMARY> db.app.find()
    { "_id" : 1, "name" : "app test" }
    test1:PRIMARY> show dbs;
    Mtest  0.078GB

登录:
    ./mongo -port 27001 -u 'li' -p '123'  --authenticationDatabase test    
    
    #登录时加上认证的数据库名称如果是  *AnyDatabase 类的role,那就是admin 了。

#python test code

import pymongo
        import datetime

#test read user
        test_conn = pymongo.MongoClient('mongodb://readonly:123456@192.168.2.113:27001/admin')
        test_db = test_conn.test

test_db.test.update({"_id":1},{"$set":{"mid":9999}})
        #test_db.authenticate('li',password='123')
        cur_test = test_db.test.find().limit(10)
        for row in cur_test:
            print 'id=%d,mid=%d'%(row["_id"],row['mid'])

Mtest_db = test_conn.Mtest
        cur_app = Mtest_db.app.find()
        for row in cur_app:
            print 'id=%d,name=%s'%(row["_id"],row['name'])

#配置
    
   1. #生成key 文件
    [mongo@localhost ~]$ openssl rand -base64 741 > /home/mongo/.ssh/mongodb_key --文件内容采base64编码
    [mongo@localhost ~]$chmod 600 /home/mongo/.ssh/mongodb_key

2. 配置文件:(集群节点都加上)

[mongo@localhost bin]$ cat rep_p.conf
    dbpath=/mnt/mongodb/data2/v2_p/
    logpath=/mnt/mongodb/log/v2_plog.log
    port=27001
    logappend=true
    fork=true
    replSet=test1
    oplogSize=100
    auth=true
    keyFile=/home/mongo/.ssh/mongodb_key

3.#使用参数文件启动

./mongod -f rep_p.conf

mongodb3.0 版本比 2.6 版本增加了dbOwner 角色。
    而mongodb 3.2 版本,又增加了clusterManager,clusterMonitor,hostManager,Back ,restore 等一些管理角色。

这也说明,mongodb的权限管理功能,一直在进步。

( dbAdmin 角色是没有读写数据库功能的,这点和其它的数据库权限有些不同。)

MONGODB 权限认证相关推荐

  1. MongoDB 权限认证

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),因为考虑到数据安全的原因特地花了一点时间研究了一下,网上搜出来的解 ...

  2. 开启docker中MongoDB的认证授权

    开启docker中MongoDB的认证授权 思路 开启MongoDB服务后,默认是没有权限验证的.直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作.下面介绍一下如何开启docker中Mo ...

  3. MongoDB权限控制

    文章目录 权限控制API 针对所有数据库的角色 针对单个数据库的角色 副本与集群的权限控制 小结 权限控制API 到目前为止,数据库都处于"裸奔"的状态,任何用户都可以连接到任何数 ...

  4. MongoDB安全认证

    1.安全认证概述 MongoDB 默认是没有账号的,可以直接连接,无须身份验证.实际项目中肯定是要权限验证的,否则后果不堪设想.从2016年开始 发生了多起MongoDB黑客赎金事件,大部分Mongo ...

  5. 还在用Spring Security?推荐你一款使用简单、功能强大的权限认证框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/qq_40058629/article/ details/116692302 我们先看一下官网介绍 ...

  6. 这可能是史上功能最全的Java权限认证框架!

    点击关注公众号,Java干货及时送达 今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框架! 这个开源项目就是:sa-token . Sa-Token是什么? sa-tok ...

  7. mongodb权限管理02

    mongodb权限管理02 接下来,mongodb 的配置文件中如何实现密码的登录呢? 我们之前是直接用的这个命令 [root@prd3-mysql-0-36 ~]# mongod -f /ivarg ...

  8. SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存

    一.在pom中引入依赖jar包 1 <properties> 2 <shiro.version>1.3.2</shiro.version> 3 </prope ...

  9. MVC项目开发中那些用到的知识点(登录权限认证)

    话说从开始接触MVC到现在也有一段时间了,记得好像是从2012年8月初开始做项目的.就记录一下自己所用到的且认为重要的知识点吧. 首先做的便是一个登录,那么就用到了登录权限认证: public cla ...

最新文章

  1. C++11中shared_ptr的使用
  2. Spring mvc集成log4j2
  3. Struts2中 Result类型配置详解
  4. 【⭐C++宝藏男孩⭐】C++ string字符串比较
  5. 【普及组模拟赛】作业
  6. ISE调用Notepad++并且实现错误高亮定位的方法
  7. 关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读
  8. 关于DataFormWebPart中CreatedModifiedInfo信息的分开使用
  9. 五分钟,手撸一个Spring容器!
  10. 渗透测试入门23之OSCP渗透测试认证经验分享
  11. Java练习02 打印三角形
  12. “云原生”为何而生?
  13. SBuild 0.2.0 发布,基于 Scala 的构建系统
  14. 电机编码器调零步骤_什么是无刷直流电机换向的最有效方法?
  15. android无法解码avcmp4,android - Android中的MediaCodec编码的H.264 avc视频无法播放 - 堆栈内存溢出...
  16. 转帖:三种快乐物质——多巴胺、血清素、内啡肽
  17. LDO稳压芯片-内部框图及选型参数
  18. 段码液晶屏驱动芯片如何选择
  19. C语言实现“勾股树”——毕达哥拉斯树
  20. 远程桌面连接的计算机是什么,连接远程桌面,连接远程桌面的凭证是什么

热门文章

  1. BufferedInputStream
  2. 微信 小程序组件 分享按钮
  3. Qt Qwdget 汽车仪表知识点拆解4 另类进度条实现
  4. 雷军反击董明珠:感觉董总好像认输了似的
  5. scala类型推断及库方法设计原则和==与java有何差别
  6. 在SqlServer中把多个job生成一个sql脚本
  7. Spring学习(四)IOC详解
  8. docker+kibana+filebeat的安装
  9. ROS学习总结一ROS组织框架与几个关键词
  10. spring boot mybatis没有扫描jar中的Mapper接口