`
zha_zi
  • 浏览: 590084 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

mongodb 权限管理

 
阅读更多

MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制 ),今天特地花了一点时间研究了一下,研究成果如下:

注:研究成果基于Windows平台

MongoDB在本机安装部署好后

1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local。local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表

2. 输入命令:use admin,你会发现该DB下包含了一个system.user表,呵呵,没错,这个表就等同于MsSql中的用户表,用来存放超级管理员的,那我们就往它里面添加一个超级管理员试试看

3. 输入命令:db.addUser('sa','sa'),这里我添加一个超级管理员用户,username为sa,password也为sa,即然我们添 加了超级管理员,那咱们就来测试下,看看咱们再次连接MongoDB需不需要提示输入用户名、密码,我们先退出来(ctrl+c)

4. 输入命令:use admin

5. 输入命令:show collections,查看该库下所有的表,你会发现,MongoDB并没有提示你输入用户名、密码,那就奇怪了,这是怎么回事呢?在文章最开始提到了,

MongoDB默认设置为无权限访问限制,即然这样,那我们就先把它设置成为需要权限访问限制 ,咱们再看看效果,怎么设置呢?

6. 在注册表中,找到MongoDB的节点,在它的ImgPath中,我们修改一下,加入 -auth ,如下所示:

"D:\Program Files\mongodb\bin\mongod" -dbpath  e:\work\data\mongodb\db  -logpath  e:\work\data\mongodb\log -auth -service

7. 输入命令:use admin

8. 输入命令:show collections,呵呵,我们发现无法查看该库下的表了,提示:"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",很明显,提示没有权限,看来关键就在于这里,我们在启动MongoDB时,需要加上-auth 参数,这样我们设置的权限才能生效,好,接下来我们使用刚刚之前设置的用户名、密码来访问

9. 输入命令:db.auth('sa','sa'),输出一个结果值为1,说明这个用户匹配上了,如果用户名、密码不对,会输入0

10. 输入命令:show collections,呵呵,结果出来了,到这里,权限设置还只讲到一多半,接着往下讲,我们先退出来(ctrl+c)

11. 输入命令:mongo TestDB,我们尝试连接一个新的库(无论这个库是否存在,如果不存在,往该库中添加数据,会默认创建该库),然后,我们想看看该库中的表

12. 输入命令:show collections,好家伙,没权限,我们输入上面创建的用户名、密码

13. 输入命令:db.auth('sa','sa'),输入结果0,用户不存在,这下有人可能就不明白了,刚刚前面才创建,怎么会不存在呢?原因在于:当我们单独访问 MongoDB的数据库时,需要权限访问的情况下,用户名密码并非超级管理员,而是该库的system.user表中的用户,注意,我这里说的是单独访问 的情况,什么是不单独访问 的情况呢?接下来再讲,现在咋办,没权限,那我们就尝试给库的system.user表中添加用户

14. 输入命令:db.addUser('test','111111'),哇靠,仍然提示没有权限,这可咋办,新的数据库使用超级管理员也无法访问,创建用户也没有权限,呵呵,别急,即然设定了超级管理员用户,那它就一定有权限访问所有的库

15. 输入命令:use admin

16. 输入命令:db.auth('sa','sa')

17. 输入命令:use TestDB

18. 输入命令:show collections,哈哈,一路畅通无阻,我们发现可以利用超级管理员用户访问其它库了,呵呵,这个就是不单独访问 的 情况,不难发现,我们是先进入admin库,再转到其它库来的,admin相当于是一个最高级别官员所在区域,如果你是个地产商,想在地方弄个大工程做 做,你想不经过那些高级官员就做,这是行不通的,你需要先去到他们那里,送点礼,再顺着下到地方,工程你就可以拿到手了,此言论仅为个人观点,不代表博客 园;即然工程拿到手了,就要开始建了,那我们不至于每加块砖、添个瓦都得去和那帮高级官员打招呼吧,所以我们得让这个工程合法化,咱们得把相关的手续和证 件弄齐全,不至于是违建

19. 输入命令:db.addUser('test','111111'),我们给TestDB库添加一个用户,以后每次访问该库,我都使用刚刚创建的这个用户,我们先退出(ctrl+c)

20. 输入命令:mongo TestDB

21. 输入命令:show collections,提示没有权限

22. 输入命令:db.auth('test','111111'),输出结果1,用户存在,验证成功

23. 输入命令:show collections,没再提示我没有权限,恭喜您,成功了

好累啊!一口气写完,呵呵

注:当需要使用权限才能访问MongoDB时,如果需要查看MongoDB中所有的库,我们只能通过超级管理员权限,输入命令show dbs来查看了

 

来源与http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html

分享到:
评论

相关推荐

    Mongodb权限管理

    MongoDB权限管理是数据库安全的重要组成部分,用于保护数据免受未经授权的访问和操作。在MongoDB中,权限管理主要涉及到用户、角色以及数据库级别的访问控制。这篇博客文章将深入探讨MongoDB权限系统的核心概念和...

    Mysql与MongoDB的权限管理与申请_20180818_张煜杰1

    【MongoDB权限管理】 MongoDB的权限管理也相当重要,它采用了角色(Role)的概念来简化权限的分配和管理。 1. **角色管理**:MongoDB支持自建角色和内建角色。内建角色如readAnyDatabase和clusterMonitor,可以在...

    MongoDB数据库管理工具

    6. 权限管理:可以查看和管理用户的访问权限,确保数据安全。 7. 操作日志:记录数据库操作,方便追踪和回溯问题。 8. 数据备份与恢复:支持MongoDB的数据备份和恢复功能,确保数据的完整性和一致性。 9. 性能...

    MongoDB权限设置

    ### MongoDB权限设置详解 #### 一、概述 在现代数据管理中,安全性是至关重要的一个方面,MongoDB作为一款流行的NoSQL数据库系统也不例外。本文将详细介绍如何在MongoDB中进行权限设置,确保数据的安全访问与操作...

    mongoDB 桌面管理工具

    8. 用户管理:用户可以在工具中创建、修改和删除数据库用户,管理权限,确保数据安全。 9. 脚本执行:支持运行MongoDB shell命令或者JavaScript脚本,方便进行批量操作和复杂的数据处理。 10. 图形化聚合管道:...

    MongoDB 权限 角色 详细说明

    MongoDB 权限角色详细说明 MongoDB 作为一个流行的 NoSQL 数据库,安全权限控制是非常重要的。为了确保数据库的安全,MongoDB 提供了多种角色,每个角色都有其特定的权限。这些角色可以分为数据库使用者及管理者、...

    mongodb数据库管理工具

    7. **用户管理**:可以方便地创建、修改和删除数据库用户,设置权限,确保数据安全。 8. **集群管理**:如果您的MongoDB部署是分布式集群,该工具可能具备管理复制集和分片的能力,显示节点状态,允许添加、删除和...

    Express+MongoDb 商品管理系统2

    后台登录状态权限管理 对于后台管理界面,你需要实现权限检查,确保只有登录的管理员才能访问特定的路由。这可以通过在每个受保护的路由之前添加检查session中是否存在用户信息的中间件来实现。 ```javascript ...

    mongoDB管理软件

    7. 用户管理:通过MongoVUE,用户可以创建、修改和删除MongoDB的用户账户,设置权限,确保数据库的安全性。 8. 备份与恢复:MongoVUE支持对MongoDB数据库进行备份和恢复,这在灾难恢复和数据迁移时非常有用。 尽管...

    一款Linux、数据库、Redis、MongoDB统一管理平台.docx

    Linux、数据库、Redis、MongoDB 统一管理平台 一、Linux 统一管理平台 Linux 统一管理平台是基于 DDD(领域驱动设计)分层架构实现的,提供了 ssh 终端、文件查看和操作、脚本管理执行、进程操作、运行状态查看等...

    MongoDB-demo, 权限管理系统移植到MongoDB数据库.zip

    MongoDB是一种流行的开源、分布式文档型数据库,常用于构建现代Web应用和权限管理系统。这个"MongoDB-demo, 权限管理系统移植到MongoDB数据库.zip"压缩包文件显然包含了一个使用MongoDB作为数据存储的权限管理系统的...

    RockMongo MongoDB数据库管理工具源码

    RockMongo是一款基于Web的MongoDB管理工具,它提供了一个直观的用户界面,使得数据库的管理和操作变得更加简单。源码的获取意味着你可以深入了解其内部工作原理,并根据需要进行定制或扩展。 RockMongo的主要特点...

    mongodb及管理工具集合包

    6. 用户管理:管理MongoDB的用户账户,设置访问权限,实现数据库安全控制。 7. 脚本编辑器:支持编写和执行MongoDB的Shell命令,便于进行自动化任务。 使用这样的管理工具,可以极大地提高MongoDB的管理和开发效率...

    windows_mongodb安装权限.zip

    本文将详细介绍如何在Windows上安装MongoDB,并为`admin`管理用户授予必要的权限,以便能够安全地操作数据库。 一、安装MongoDB 1. 下载安装包:首先,访问MongoDB官方网站...

    mongoDB数据库WEB远程维护管理软件

    5. 用户管理:创建、修改和管理数据库用户,设置权限,确保数据安全。 6. 备份与恢复:自动化或手动执行MongoDB备份,以防止数据丢失,并能快速恢复到特定时间点。 7. 图形化索引管理:创建、修改和删除索引,提升...

    MongoDB设置访问权限、设置用户

    MongoDB中的权限管理主要通过角色(Roles)来实现,每个角色都有特定的权限集。常见的角色有读(read)、读写(readWrite)、数据库管理员(dbAdmin)和集群管理员(clusterAdmin)等。例如,为特定数据库创建一个只...

    Mongodb网页管理工具,基于Spring Boot2.0实现

    Mongodb网页管理工具,基于Spring Boot2.0,前端采用layerUI实现。 源于线上环境部署mongodb时屏蔽了外网访问mongodb,所以使用不了mongochef这样方便的远程连接工具,便Mongodb提供的java api实现的的网页版管理。 未...

    记录MongoDB管理操作

    2. **用户权限管理**:创建用户并为其分配适当的权限,以限制对数据库的操作。例如,可以为特定用户授予读取或写入特定集合的权限。 3. **网络隔离**:只允许信任的IP地址访问MongoDB服务,如通过`bind_ip`参数指定...

Global site tag (gtag.js) - Google Analytics