`
兩ting
  • 浏览: 78319 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

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中(HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services-MongoDB-ImagePath),我们修改一下,加入 -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 的用户管理和权限设置是一个重要的安全环节,涉及到管理员账户的创建、权限认证的开启、用户权限的分配以及客户端的连接验证。理解和熟练运用这些知识点对于保障 MongoDB 系统的安全运行至关重要...

    Windows下MongoDB配置用户权限实例

    在Windows环境下配置MongoDB的用户权限是数据库安全中的一项重要工作,它确保了只有经过认证的用户才能访问数据库内容。这个过程涉及创建用户角色,并为这些角色分配相应的数据库访问权限。 初始情况下,MongoDB并...

    给MongoDB添加用户权限方法分享

    本文将详细介绍如何在 MongoDB 中添加用户权限,以及解决在不同版本之间遇到的问题。 首先,我们来看添加用户权限的基本步骤。在 MongoDB 中,我们可以使用 `addUser` 或 `createUser` 命令来创建新用户并指定其...

    MongoDB创建用户

    然而,在实际应用中,安全性是非常重要的一个方面,MongoDB 提供了多种方式来保护数据的安全,例如用户身份验证、权限控制、加密存储等。今天,我们将讨论如何在 MongoDB 中创建用户和分配权限。 一、启动 MongoDB ...

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

    本篇文章将详细解析如何在MongoDB中创建用户并设置权限。 首先,我们需要理解MongoDB权限的基本概念。MongoDB在默认情况下不启用权限认证,这意味着任何人都可以访问数据库。为了保护数据,我们需要先添加管理员...

    Mongodb 3.2.9开启用户权限认证问题的步骤详解

    在 MongoDB 3.2.9 版本中,虽然默认情况下它允许无认证访问,但为了确保数据安全,启用用户权限认证是非常重要的。以下是一份详细的步骤指南,帮助你了解如何在 MongoDB 3.2.9 中设置用户权限认证。 ### 前言 默认...

    PHP操作MONGODB详细文档

    要给 MongoDB 的服务器端添加权限验证,需要在启动 MongoDB 的服务的时候添加--auth 参数,例如: ``` d:\mongodb\bin>mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log --logappend --...

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

    在MongoDB中,用户管理员具有在任何数据库上创建和管理用户的权限。使用`use admin`切换到admin数据库,然后执行`db.createUser()`命令创建用户管理员,例如: ```javascript db.createUser({ user: ...

    MongoDB常用命令批处理

    这通常涉及到修改`mongod.conf`配置文件,添加用户和角色,然后重启服务。 5. **移除MongoDB服务**: - `remove.bat`:这个批处理脚本可能用于从Windows服务管理器中卸载MongoDB服务。这通常会使用`sc delete`命令...

    Mongodb常用的身份验证方式

    开启 MongoDB 的身份验证是通过在启动数据库时添加 `--auth` 参数来完成的。默认情况下,如果没有启用这个参数,MongoDB 会处于无验证模式,任何客户端都能对数据库进行不受限制的访问。一旦启用验证,数据库将要求...

    goAuth_goweb权限验证_

    在本文中,我们将深入探讨`goAuth_goweb权限验证`这一主题,它是一个使用Go语言实现的Web应用程序权限验证框架。Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发的、垃圾回收的、具有C风格...

    MongoDB为用户设置访问权限

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

    express+mongoDB的一套后台管理系统.zip

    express+mongoDB的一套后台管理系统,实现功能:邮箱验证、注册、登录、jwt验证、用户管理、权限列表、角色列表、商品的增删改查、国际化管理(增删改查、批量添加、excel导入导出、导出js文件)、图片上传等 ...

    mongodb Windows7 64位

    为了增强安全性,应创建用户并启用身份验证。在MongoDB 3.0.2版本中,可以在命令行中使用`--auth`选项启动服务,然后在MongoDB Shell中创建用户。 - 网络安全:通过修改配置文件中的`bindIp`参数,限制MongoDB只...

    mongodb 的使用.docx

    3. **认证用户连接**:启用身份验证后,需使用 `--auth` 参数启动 MongoDB 服务,然后使用 `mongo` 命令行工具和 `-u`、`-p` 参数进行身份验证连接。 ### MongoDB 文档操作 MongoDB 存储数据的基本单位是文档,...

Global site tag (gtag.js) - Google Analytics