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/

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM