MongoDB 用户及权限增删

本文主要是MongoDB4.X的操作

一、MongoDB用户创建

 

MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问。 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。
MongoDB系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。
1.创建管理员用户
要在MongoDB部署中创建用户,请连接到部署,然后使用db.createUser()方法或createUser命令添加用户。

rs0:PRIMARY> db.createUser(
... {
... user:"test",
... pwd:"123456",
... roles:[{role:"root",db:"admin"}]
... }
... )
Successfully added user: {
"user" : "test",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

查看全部用户用db.getUsers();

2.添加并验证用户

use admin

db.addUser(“abc”,”123456”)

db.auth(“abc”,”123456”)

3.查看已存在的用户

db.system.users.find()

db.getUsers();

4.查看用户信息

> use admin

> db.getUser("用户名", { showPrivileges: true })

> db.getSiblingDB("admin").runCommand(

  {

    usersInfo: "root",

     showPrivileges: true

     }

)

5.添加数据库用户
创建指定数据库的用户,该用户只能访问该数据库。也可以为此数据库上的用户指定访问级别。 例如,创建一个在data数据库上具有读写访问权限的用户帐户。

> use data

> db.createUser( { user: "user01", pwd: "123456", roles: ["readWrite"] } )

db.getSiblingDB("admin").runCommand( { createUser: "user02", pwd: "123456", customData: { info: "user for user02" }, roles: ["readWrite"] } )

身份验证使用db.auth('用户名','密码');

 Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system

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

db.createUser(
{
user: "fyerp",
pwd: "test.123",
roles:
[{ role: "readWrite", db: "item" },{ role: "readWrite", db: "local" },{ role: "readWrite", db: "logdb" }]
}
)

7.为用户添加角色

用户user02添加admin数据库的readWrite角色

> use admin

> db.grantRolesToUser( "user02", [ { role: "readWrite", db: "admin" }, { role: "user02", db: "admin" } ] )

> use admin

> db.runCommand( { grantRolesToUser: "user02", roles: [ { role: "readWrite", db: "admin" }, { role: "user02", db: "admin" } ] } )

8.更新用户信息

更新用户user02具有admin数据库readWrite角色为read角色。

> use admin

> db.updateUser( "user02", { customData: { info: "user for user02" }, roles: [ { role: "user02", db: "admin" }, { role: "read", db: "admin" } ] } )

> use admin

> db.runCommand( { updateUser: "user02", customData: { info: "user for user02" }, roles: [ { role: "user02", db: "admin" }, { role: "read", db: "admin" } ] } )

9.为用户回收角色

> use admin

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

> use admin

> db.runCommand( { revokeRolesFromUser: "dbabd_user", roles: [ { role: "read", db: "admin" } ] } )

10.更改用户密码

更改用户dbabd_user密码为dbabdnew。

> use admin

> db.changeUserPassword("dbabd_user", "dbabdnew")

11.删除用户

删除用户dbabd_user

> use admin

> db.dropUser("dbabd_user")

> use admin

> db.runCommand({ dropUser: "user02" })

关于更多用户管理操作信息可以参考官方文档说明:

https://docs.mongodb.com/manual/reference/method/js-user-management/

原文地址:https://www.cnblogs.com/zhm1985/p/13405452.html