文档章节

mongodb的安全认证和索引的建立和删除

渺渺星辰
 渺渺星辰
发布于 2017/07/26 16:49
字数 696
阅读 9
收藏 0

mongodb的安全认证

1.权限认证:

   1)auth认证

    a) 设置方法:  添加 auth=true  到 mongodb.conf中  

                     或者在启动的时候添加 --auth       -------->重新启动mongodb就可以了(日志文件中可以查看到)

   b)用户设置的语法:         

 db.createUser({

                 user:'用户名',

                 pwd:'密码'

                 customData:'关于用户名密码的一些描述' 

                 roles:['role':'角色类型',db:'针对的数据库名称'] })  #如果不写db,默认针对当前数据库                            

实例:db.createUser({user:"testuser",pwd:"testpass",roles:[role:"readWrite",db:stu]})

     2)角色类型           

       

a)内置的角色类型:

      read : 指定db上做读取操作(find)

      readWrite: 指定db上(增删改查但是不能删除数据库)

      dbAdmin:  指定db上增删改查,数据库类型转换

      dbOwner:   read+readWrite+dbAdmin集合

      userAdmin:对其他用户进行管理

b)集群角色: clusterAdmin,clusterManager等等

c)备份角色:  backup,restore等等

e)其他特权角色:  readAnyDatabase ------>该用户对所有数据库都只有读的权限(其他内置角色也能增加AnyDatabase)

         用户权限认证:

         首先建立一个最大权限的用户:     

 
#建立一个超级用户
use admin
db.createUser({ user: "admin" , pwd: "admin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]});  


在针对数据库建立用户:
#建立一个针对stu数据库读写权限的用户

db.createUser({user:"testuser",pwd:"testpass",roles:[role:"readWrite",db:stu]})    

#建立一个对所有数据库只读权限的用户       
db.createUser({user:"test",pwd:"test",roles:[role:"readAnyDatabase"})                

进入stu数据库:
use stu
db.auth('testuser','testpass')  ---->db.auth('用户名','密码')

 用户信息查询:      

1.全部用户 

 show users                  #查询当前数据库下的用户

 db.system.users.find()    #查询当前数据库所管理的用户

db.getUser('用户名')  或者  db.getUsers()   #在帐号所在数据库下使用

2.新建用户

a)超级用户 root

db.createUser({user: "root",pwd: "123456",roles: [ "root" ]})

// db.addUser("root","123456")         ####mongodb2.6之前的语法

b)用户管理权限 userAdminAnyDatabase

db.createUser({user:"userAdmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

c)数据库管理权限 dbAdminAnyDatabase

db.createUser({user:"dbAdmin",pwd:"123456",roles:[{role:"dbAdminAnyDatabase",db:"admin"}]})

e)数据读写用户 readWriteAnyDatabase

use test

db.createUser({user:"sa",pwd:"sa",roles:[{role:"readWrite",db:"test"}]})

f)删除用户(进入到相应的数据库中,并且登陆的用户有用户管理权限):

db.dropUser(username)

g)删除数据库下所有帐号

db.dropAllUsers()

h)修改密码:

db.changeUserPassword("用户名","密码")

角色权限

展示角色 show roles;    ---->查询出所有的数据库中的角色

 

   3)key-file认证:

 

mongodb索引的建立和删除:

建立单索引:    

db.COLLECTION_NAME.ensureIndex({KEY:1})    

复合索引  

db.COLLECTION_NAME.ensureIndex({KEY:1,key1:-1})

注意事项:Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1

删除索引:  

db.COLLECTION_NAME.dropIndex({KEY:1})

查看索引:

db.system.indexes.find()

 

© 著作权归作者所有

共有 人打赏支持
渺渺星辰
粉丝 2
博文 33
码字总数 34632
作品 0
海淀
浅述MongoDB的管理操作

浅述MongoDB的管理操作 2011-08-22 21:49 不知不觉房产系统已经使用MongoDB一年多了,记得一年多以前,正是NOSQL被热炒时,MongoDB更是作为NOSQL中的佼佼者,被炒得火烫,也应该就在当时被这...

李长春
2011/09/02
0
0
MongoDB集群部署 - 带访问控制的分片副本集

1. 前言   Ceilometer将meter、event等数据保存在MongoDB中,之前将MongoDB部署在控制节点上,使用三副本模式,时间长了发现meter数据爆炸式增长,区区2T的磁盘捉襟见肘,而想删除旧数据,...

Sai18
昨天
0
0
mongodb 阶段性技术总结

生产环境最佳实践 1.linux 系统: 1】关闭文件系统/分区的atime 选项 Vi /etc/fstab 在对应的分区项后面添加noatime ,nodiratime LABEL=/1 / ext3 defaults 1 1LABEL=/data1 /data ext4 def...

huzorro
2012/08/21
0
3
十个 MongoDB 使用要点

从 mongodb 阶段性技术总结 中抽取并整理了对大家有帮助的十个要点: 1.mongodb 表名和字段名统一用小写字母 mongodb 是默认区分大小写的,为了避免以前在 mysql 下遇到的大小写敏感导致程序...

旁观者-郑昀
2013/02/08
0
0
如何安全地配置一个生产环境的MongoDB服务器?

如何安全地配置一个生产环境MongoDB服务器? 安全配置一个生产环境MongoDB服务器 如果MongoDB是一个为你提供选择的文档存储器,那么这篇文章会帮助你,安全妥善地配置一切就绪的生产环境。 ...

samday
2014/04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
35分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
40分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
47分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
50分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
55分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部