MongoDB 之 用户管理

本文详细介绍了MongoDB的用户管理,包括如何添加超级管理员、配置用户验证、数据库管理员的权限设置等。通过实际操作演示了MongoDB的权限控制过程,强调了启用验证后,localhost连接的权限变化。同时,提供了限制用户权限和创建数据库管理员的示例。
摘要由CSDN通过智能技术生成

写在前面的话

Note:   该文章仅对 2.x版本有效,3.x版本已更新了API


  1. 本篇博客主要介绍Mongobd的用户管理
  2. 本篇博客以参考官方文档为主
  3. 本篇涉及到官方文档的部分是:[ http://docs.mongodb.org/manual/core/access-control/ ]
  4. 如果可能,请尽量阅读官方文档,而不是看我的这篇博客。个人强烈推荐直接阅读官方文档。
  5. 本人英语水平不好,肯定会遇到错误或疏忽之处,请指出。(这也是推荐直接官方Docs的原因之一)
  6. 转载请注明出处,
开始

先看下官方文档的简单介绍

MongoDB provides support for authentication and authorization on a per-database level. Users exist in the context of a single logical database.

MongoDb提供的基于数据库级别的权限控制,每个数据库都有属于自己的管理者帐号。这一点不同与Mysql之类的数据库,Mysql中的用户是对创建的connection里面的每个数据库都具有操作权限。而Mongodb是每个数据库都拥有一个套属于自己的用户表。例如,有两个db A和B,在A中的用户UserA,在B中是不存在的,更不用说操作权限了。

在用户安装完monogdb后 默认是没有开启权限验证 。如果希望开启,则需要自己配置。当然,这也是属于本篇博客的主要内容了。 
在敲代码之前先讲官方文档提到的东西。


  1. 每个db中有存在一个叫system.users(如果没管理者信息,则不存在)的Collection,这个Collection中就保存着当前这个db的管理用户帐号信息。描述原文如下: 

    For basic authentication, MongoDB stores the user credentials in a database’s system.users collection.


在Mongodb中有个叫admin的数据库。这个admin数据库提供一个在其他数据库中不可使用的角色。这个角色可以在其他数据库中创建超级管理员。

简单来说就是 有个叫admin的数据库,这里面保存着一种角色,这个角色无法直接操作其他的数据。但是,这个角色可以为其他数据库来添加一个超级管理员。 换句话说,除admin之外的其他db(假设为D),需要admin数据库里面的角色(假设为A)权限来创建一个属于自己的管理员(假设为B),这个管理员B才具有对D具有增删改(当然增删改的权限可以分别对B进行现在,在A创建B时)的权限,A 确实没有这个权限的。

这个大概就是mongodb的用户管理的一个大致分析。

下面我们根据实际操作来看看 用户增加使用。

添加超级管理员

第一步 ,先得安装好mongodb和设置好它。具体可以见我的另外一篇博客

启动mongod

运行以下命令:(#号后面为注释)

use admin #切换到admin db
db.addUser( {
    user: "admin", #替换成自己的用户名
              pwd: "password", #替换成自己的密码 
              roles: [ "userAdminAnyDatabase" ] } )

运行完上面的命令后,大概会出来这个东西

{
   
    "user" : "admin",
    "pwd" : "90f500568434c37b61c8c1ce05fdf3ae",
    "roles" : [
        "userAdminAnyDatabase"
    ],
    "_id" : ObjectId("52d400465feca82c4fdb1a48")
}

现在超级数据库管理员 [注:这里包括下文 把admin数据库中创建的用户,叫做超级管理员] 已经完成创建了。 
现在验证一下

db.auth("admin","password");#实际上这个相当于一个登录操作。

这是如果帐号密码输入正确的话,应该返回一个 1.否则返回 0。

这时你可以执行:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值