`
冷静
  • 浏览: 145999 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

MongoDB设置访问权限

    博客分类:
  • DB
 
阅读更多

原文地址:http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html

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来查看了。

分享到:
评论

相关推荐

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

    本文将详细介绍如何在MongoDB中设置访问权限以及创建用户。 一、安装MongoDB 在开始设置权限和用户之前,你需要先在服务器上安装MongoDB。根据你的操作系统(如Linux、Windows或macOS),可以去MongoDB官网下载相应...

    MongoDB权限设置

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

    MongoDB为用户设置访问权限

    ### MongoDB为用户设置访问权限详解 #### 背景与目的 随着MongoDB在实际应用场景中的不断深化,安全性和访问控制变得尤为重要。本文旨在通过详细步骤解析如何在MongoDB中为用户设置访问权限,帮助读者理解MongoDB的...

    Mongodb权限管理

    此外,定期审计和更新权限设置也非常重要,以确保随着业务需求的变化,权限分配始终保持适当。 在使用MongoDB工具时,如MongoDB Compass或Mongo Shell,也需要考虑到权限问题。这些工具通常需要连接到数据库并执行...

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

    这种细致的划分使得管理员能够精确地控制用户的访问权限,比如限制用户只能从特定的IP地址访问某个数据库的特定表。 2. **DBA角色权限**:DBA(数据库管理员)拥有最高的权限,可以进行权限管理、查询以及执行审批...

    windows_mongodb安装权限.zip

    在Windows环境下安装MongoDB时,涉及到权限配置是确保数据库安全运行的关键步骤。本文将详细介绍如何在Windows上安装MongoDB,并为`admin`管理用户授予必要的权限,以便能够安全地操作数据库。 一、安装MongoDB 1....

    MongoDB 3.0+安全权限访问控制详解

    8. **普通用户权限设置** 普通用户可以被赋予不同的角色,如`read`(只读)、`readWrite`(读写)、`dbAdmin`(数据库管理员)等,以限制他们的操作范围。例如,`readWrite`角色允许用户在特定数据库上读取和写入...

    MongoDB 权限 角色 详细说明

    该角色拥有读取所有非系统数据库的权限,以及访问 system.indexes, system.js, 和 system.namespaces 等系统数据库的权限。此外,该角色还拥有读取 collStats, dbHash, dbStats, find, killCursors, listIndexes, ...

    MongoDB创建用户并设置权限[借鉴].pdf

    MongoDB还提供了多种内置角色,如`read`、`readWrite`、`dbAdmin`、`userAdmin`、`clusterAdmin`等,它们分别对应不同的访问权限。例如,`readAnyDatabase`和`readWriteAnyDatabase`角色可以在`admin`数据库下创建,...

    MongoDB 最佳安全配置.pdf

    还需检查所有用户和默认用户的权限,以及超级用户的权限设置。 网络安全配置也是数据库安全的重要组成部分。建议使用SSL或TLS协议来保证网络通讯的安全。此外,还应确保MongoDB的审计配置正确,包括开启审计、审计...

    Windows下MongoDB配置用户权限实例

    当MongoDB没有进行权限设置时,任何用户都可以无限制地连接和操作数据库。为了改变这一默认设置,我们需要修改MongoDB服务的配置,确保它在启动时就启用了认证功能。这个过程可以通过编辑Windows注册表来完成。具体...

    MongoDB安装包

    在实际应用中,还需要考虑MongoDB的安全性,包括设置用户认证、网络访问控制、数据加密以及定期备份与恢复策略。理解这些核心概念和操作将有助于你更好地利用MongoDB构建和管理高效的数据存储解决方案。

    2012 最新的mongodb sharding配置步骤 权威指南 分片步骤

    - 在每台服务器上创建MongoDB的数据存放目录,并分配相应的权限。例如,在/home/mongodb/data/dbs下创建对应分片的子目录,如shard01和shard61,同时创建日志目录。 3. **启动MongoDB实例**: - 使用`mongod`命令...

    mongodb副本集+权限

    MongoDB的权限系统允许对数据库的访问和操作进行细粒度控制。每个数据库用户可以被赋予不同的角色,角色定义了可以执行的操作和访问的数据范围。MongoDB中的角色可以是单一数据库级别的也可以是全局级别,具体角色...

    MongoDb db.createUser用户权限

    MongoDB 是一个流行的开源文档型数据库,以其灵活性和高性能...通过合理地设置角色,可以确保数据的安全性,同时满足不同用户对数据库的不同访问需求。在实际应用中,应根据具体的安全策略和功能需求来设定用户的权限。

    MongoDB安装与设置.docx

    1. **下载安装包**:访问MongoDB官方网站,下载适用于Windows的最新稳定版本安装程序。 2. **启动安装程序**:双击下载的安装包,按照提示进行安装。在安装过程中,选择"Custom"模式,以便自定义安装路径。确保你为...

    Mongodb4.x介绍以及Mongodb账户权限配置1

    2. 修改 MongoDB 配置文件:在 `mongod.cfg` 文件中启用授权,将 `security.authorization` 设置为 `enabled`。 3. 重启 MongoDB 服务:更新配置后,需要重启服务以应用更改。 4. 使用超级管理员账户连接数据库:...

    mongodb Windows7 64位

    - 网络安全:通过修改配置文件中的`bindIp`参数,限制MongoDB只监听特定的IP地址或接口,防止未授权的远程访问。 5. **备份与恢复** - 备份:MongoDB提供了`mongodump`工具,可以将数据库备份为JSON或BSON格式的...

    mongodb资料

    2. **php操作mongodb和mongodb的权限机制.doc**:这个文档应该详细解释了如何使用PHP的MongoDB驱动进行数据操作,并且涵盖了MongoDB的权限管理,包括用户创建、角色分配和访问控制。 3. **MongoDB权威指南中文版....

Global site tag (gtag.js) - Google Analytics