mongodb用户管理

Posted 长城之上是千亿的星空,星空之上是不灭的守望。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb用户管理相关的知识,希望对你有一定的参考价值。

角色具体说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner:数据库拥有者,包含readWrite、dbAdmin、userAdmin
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root:只在admin数据库中可用。超级账号,超级权限
__system: 内部角色,不建议使用



创建一个不受访问限制的超级用户

use admin
db.createUser(
{
   user:"root",
   pwd:"www.ttlsa.com",
   roles:["root"]
}
)




创建一个超级用户

超级用户的role有两种,userAdmin和userAdminAnyDatabase
use admin
db.createUser(
{
    user: "admin",
    pwd: "www.ttlsa.com",
    roles:[
        {
             role: "userAdminAnyDatabase",
             db: "admin"
        }]
}
)


db是指定数据库的名字,admin是管理数据库。


创建普通用户

use admin
db.createUser(
{
    user:"dev",
    pwd:"www.ttlsa.com",
    roles:[
        {role:"read",db:"db01"},
        {role:"read",db:"db02"},
        {role:"read",db:"db03"}
    ]
}
)

    
删除用户

首先进入目标库:use test
db.dropUser("testuser")
db.system.users.remove({user:"testuser"});
db.removeUser("testuser");


查看当前用户权限

db.runCommand(
{
   usersInfo:"userName",
   showPrivileges:true
}
)

    


只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中创建的用户。

修改用户密码

use admin
db.changeUserPassword("username", "xxx")
 


查看用户信息

db.runCommand({usersInfo:"userName"})
db.system.users.find()
 


修改用户密码和用户信息

db.runCommand(
{
    updateUser:"username",
    pwd:"xxx",
    customData:{title:"xxx"}
}
)
 

添加角色

首先进入目标库:use test

db.grantRolesToUser(  "testuser",  [    { role: "read",db:"admin"}  ] )    



回收角色权限

首先进入目标库:use test

db.revokeRolesFromUser("testuser",[    { role: "read",db:"admin"}  ] )



搭建认证环境和认证登录

1、找到mongodb配置文件,设置noauth=true

重启Mongodb后,登录admin账号,创建一个超级权限用户

use admin

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


2、关闭mongodb

3、启用认证参数

要保证权限认证生效,需要在mongodb配置文件中加入auth=true,同时取消掉noauth=true

4、启动Mongodb

5、认证登录

> use admin
switched to db admin
> db.auth(‘root‘,‘root‘)

1
> use hong
switched to db hong
> show collections;
mycol
system.users
> db.mycol.find();
{ "_id" : ObjectId("56f255b77fa46acddeb4507b"), "name" : "mycol" }



注:
与用户管理相关的操作基本都要在admin数据库下运行,要先use admin;
如果在某个单一的数据库下,那只能对当前数据库的权限进行操作;
db.addUser是老版本的操作,现在版本也还能继续使用,创建出来的user是带有root role的超级管理员。











































































































































































以上是关于mongodb用户管理的主要内容,如果未能解决你的问题,请参考以下文章

赵强老师MongoDB管理用户的认证机制

如何对MongoDB 3.2.7进行用户权限管理配置

MongoDB 用户角色管理

MongoDB 用户角色管理

MongoDB 用户角色管理

MongoDB用户及权限管理:角色说明