一、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操作。

    

    

    

最新文章

  1. slideDoor(学习某编程网站的,仅作记录和学习)
  2. spring源码分析之spring-core asm概述
  3. hdu 并查集分类(待续)
  4. PHP 判断数组是否为空的5大方法
  5. 【转】java 自动装箱与拆箱
  6. linxu php连接sqlserver
  7. 去掉input【type=number】默认的上下箭头
  8. 开源mp3播放器--madplay 编译和移植 简记
  9. Ubuntu下PHP MySQL环境搭建-upcoming-ChinaUnix博客
  10. java中==与equel的区别
  11. 【BZOJ3277】串(后缀自动机)
  12. Codeforces Global Round 2 Solution
  13. Java延时器
  14. 上传文件服务器与web内容服务分离
  15. maven项目中利用jmeter-maven-plugin插件直接执行jmeter jmx脚本
  16. struts2基础---->第一个Struts2程序
  17. redis高可用 - Master&Slave
  18. 前端学习笔记之Z-index详解
  19. 论文阅读 | CornerNet:Detecting Objects as Paired Keypoints
  20. JSON与null

热门文章

  1. Update 语句用于修改表中的数据。
  2. Thinkphp新增字段无法插入到数据库问题
  3. 【python】matplotlib中文乱码问题
  4. 【RF库测试】Exit For Loop 相关
  5. Android之Handler与AsyncTask的区别
  6. hdu1059(多重背包优化)
  7. [SharePoint 2010] SharePoint 2010上多人同時編輯Office 2010文件
  8. linux的简单查找的方法
  9. Spring 集合注入
  10. Python闲谈(一)mgrid慢放