一、MongoDB安全校验的重要性

    每个MongoDB实例中的数据库都可以有许多用户。如果没有开启安全校验,限制用户权限,则每个进到数据库的用户都能任意的对数据库数据进行读,写甚至是读写操作。这样的场景在实际的应用中是非常危险的,容易导致数据丢失,误删等事故,所以数据库服务开启安全校验,十分有必要。

  二、MongoDB如何开启安全校验

    一旦MongoDB开启了安全检查,则必须是数据库认证用户才有权力对数据进行读,写或读写操作。在进行安全检查之前,一定要至少有一个管理员账号,这是为什么呢?因为只有管理员可以读写任何的数据库,执行特定的管理命令,如为某个数据库添加特定用户,限制读写权限等。

    如下图,为admin数据库添加了超级管理员root,密码为1234,方便在数据库开启安全检查后,使用该用户登录后能够进行数据库的管理,添加用户的语法为

    db.addUser("用户名","密码",是否只读true|false)

    然后为kaiye数据库添加了两个用户,语法分别为

    db.addUser("haha","123"):haha用户对kaiye数据库具有读写权限

    db.addUser("hehe","123",true):hehe用户对kaiye数据库只有读权限

    重启服务端,并在开启服务端命令后面添加 --auth,就启动了MongoDB的安全校验了。

    mongod --dbpath=C:\\mymongodb --port 27017 --auth

    

    在服务端开启安全校验后,分别登录haha和hehe用户,进行数据的读写操作,在show collections时,会报无权限的异常。

    

    此时需要使用数据库的用户进行认证登录,语法:db.auth("用户名","密码"),登录刚才添加的hehe用户(添加了只读权限)后,发现只能对数据进行检索查询,却不能进行数据的插入操作,这是因为刚才在为kaiye数据库添加hehe用户时,将addUser()函数的第三个值设置成了true,也就是该用户只有只读权限,所以无法进行写操作。

    

    切换用户,即登录同时具有读写权限的haha用户,会发现既能进行find操作,也能进行insert操作。

    

    

    

MongoDB的安全校验的更多相关文章

  1. MongoDB for OPS 04:备份恢复

    写在前面的话 和 MySQL 一样,mongodb 也是需要将数据进行备份的,毕竟天有不测风云,谁也不知道哪天机器就炸了. 备份恢复 mongodb 提供了两种备份恢复手段:mongoexport / ...

  2. mongodb C#连接报错 Invalid credentials for database 'admin'

    这2天学习mongodb3.2.9,用户设置好了,结果用C#查询的时候报错了,看字面意思是用户验证没通过,但是我用shell是完全没有问题的,后来网上搜了下,发现原来是我用的是旧驱动,旧驱动用的是旧的 ...

  3. WebFlux04 SpringBootWebFlux集成MongoDB之Windows版本、WebFlux实现CRUD、WebFlux实现JPA、参数校验

    1 下载并安装MongoDB 1.1 MongoDB官网 1.2 下载 solutions -> download center 1.3 安装 双击进入安装即可 1.3.1 安装时常见bug01 ...

  4. MongoDB学习day09--Mongoose数据校验

    一.Mongoose检验参数 required : 表示这个数据必须传入max: 用于 Number 类型数据, 最大值 min: 用于 Number 类型数据, 最小值 enum:枚举类型, 要求数 ...

  5. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  6. sqlyog导出json数据格式支持mysql数据转存mongodb

    <!-------------知识的力量是无限的(当然肯定还有更简单的方法)-----------!> 当我考虑将省市区三级联动数据从mysql转入mongodb时遇到了网上无直接插入mo ...

  7. 使用aggregate在MongoDB中查找重复的数据记录

    我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...

  8. mongodb在WEB开发中的应用与实践

    一.mongodb是什么? 一套高性能.易开发的文档型数据库.他使用键值对形式存放数据,能够存放包括字符串.数组.数据序列.图片.视频等在内的大多数数据文档.MongoDB完善的设计,搞笑的可编程性使 ...

  9. Laravel 校验规则之字段值唯一性校验

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] laravel validator unique 'name' => 'required|unique:test,disp ...

随机推荐

  1. 在项目中使用JMail发送邮件

    1.添加JMail组件:在vs的解决方案资源管理器中,右键添加引用,选择浏览,选择jmail.dll文件,在Bin文件夹中就可以看到添加的JMail组件. 2.注册JMail组件:开始-->运行 ...

  2. zabbix 监控 AWS-SQS 队列

    zabbix-AWS_SQS-monitor AWS SQS status monitor with zabbix zabbix通过 AWS 云 api 自动发现.监控 AWS-SQS 本版本数据的图 ...

  3. Python 矩阵与矩阵以及矩阵与向量的乘法

    import numpy as np numpy模块的array相乘时,有两种方式:一是矩阵形式,二是挨个相乘. 需要用矩阵形式相乘时,则要用np.dot()函数. #矩阵与矩阵相乘a = np.ar ...

  4. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...

  5. Apache -- 压力测试工具ab.exe

    ab全称ApacheBench是Apache超文本传输协议(HTTP)的性能测试工具.是描绘当前所安装的Apache的执行性能, 主要是显示你安装的Apache每秒可以处理多少个请求Apache自带的 ...

  6. Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache

    在ASP.NET中有两个类都提供缓存支持, 一个是HttpRuntime类的Cache属性, 另一个是HttpContext类的Cache属性. 通过查看这两个属性的类型可以发现其实这两个属性都是Sy ...

  7. subprocess.Popen() 常用方法

    p.stdout.read() :用于读取标准输出,会一次性读取所有内容,返回一个字符串p.stdout.readline() :用于读取标准输出,一次只读取一行内容,返回一个字符串p.stdout. ...

  8. recyclerView中的方法

    onCreateViewHolder(); onBindViewHolder(); getItemCount(); recyclerVIew中没有添加头布局和尾布局方法.可以用getItemViewT ...

  9. codevs 5965 [SDOI2017]新生舞会

    分数规划的裸题. 不会分数规划的OIer.百度:胡伯涛<最小割模型在信息学竞赛中的应用> /* TLE1: last:add(i,j+n,1e9,(real)((real)a[i][j]- ...

  10. asp 中创建日志打印文件夹

    string FilePath = HttpRuntime.BinDirectory.ToString(); string FileName = FilePath + "日志" + ...