MongoDB用户管理

本文将介绍MongoDB中对用户的基础管理,例如:创建用户、删除用户、查看用户

创建用户

在 mongodb 中,使用 db.createUser() 方法创建用户。db.createUser() 方法格式如下:

db.createUser({user:"", pwd: "", roles:[{role:"", db: ""}]})

其中:

  • user:表示用户名

  • pwd:表示密码

  • roles:表示用户权限,注意:接收的是一个数组

  • role:角色名称

  • db:数据库名

MongoDB中常见的角色如下:

  • 数据库用户角色

    • read:允许用户读取指定数据库

    • readWrite:允许用户读写指定数据库

  • 数据库管理角色

    • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

    • dbOwner

    • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

  • 集群管理角色

    • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限

    • clusterManager

    • clusterMonitor:集群监控

    • hostManager

  • 备份恢复角色

    • backup:备份角色

    • restore:恢复角色

  • 所有数据库角色

    • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

    • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

    • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

    • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

  • 超级用户角色

    • root:只在admin数据库中可用。超级账号,超级权限。

实例:创建 admin 账号,密码为 123456,允许在 admin 数据库中进行任何操作。如下:

> use admin
switched to db admin
>
> db.createUser({user:'admin', pwd:'123456', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

删除用户

MongoDB中删除用户,比创建用户简单太多了。只需要使用 db.dropUser('用户名') 命令即可。例如:

> db.dropUser('admin');
true

用户权限

创建用户后,我们还需要在启动 mongodb 的时候使用 --auth 选项开启权限管理功能。开启权限如下:

mongod.exe -f mongo.cfg --auth

然后,使用 db.auth() 验证权限。例如:

D:mongodb-3.4.15in> mongo.exe                                       
MongoDB shell version v3.4.15-52-g874aa31cae      
connecting to: mongodb://127.0.0.1:27017          
MongoDB server version: 3.4.15-52-g874aa31cae     
> use test                                        
switched to db test                               
> db.auth("test", "123456")                       
1

注意:db.auth() 返回1表示权限验证成功。

看书和学习是思想的经常营养,是思想的无穷发展。 —— 冈察洛夫
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号