MongoDB入門系列(四):權限管理


一、概述

本篇文章主要介紹如何創建用戶和角色相關概念,同時對角色的添加和刪除做了相關介紹。

 

版本:3.6.2

二、角色相關概念

1.數據庫用戶角色

read:該角色擁有數據的只讀權限,系統集合以及system.indexes,system.js,system.namespaces集合除外。

readWrite:該角色擁有對應數據庫的讀寫權限,系統集合和system.js集合除外。

2.數據庫管理角色

dbAdmin:該角色擁有指定數據庫數據庫管理權限,包括 system.indexes, system.namespaces, system.profile集合的操作權限。該角色不擁有所有非系統集合的讀權限。

dbOwner:該角色擁有指定數據庫的所有權限,該角色包括:readWrite、dbAdmin、userAdmin。

userAdmin:該角色擁有指定數據庫用戶和角色的管理權限。包括創建用戶等。

3.群集管理角色

clusterAdmin:該角色擁有群集的所有權限。該角色包含clusterManager,clusterMonitor,hostManager 角色權限。同時還要刪除數據庫的權限。

clusterManager:該角色擁有群集的管理和監控權限,包括對local、config數據庫的訪問權限。同時該角色擁有分片和復制集的管理權限。

clusterMonitor:該角色擁有群集的監控權限。

hostManager:該角色擁有群集的監控和服務管理權限。

注意:這些角色只能在Admin數據庫下創建

4.備份還原角色

backup:該角色擁有備份數據的權限。

restore:該角色擁有還原備份數據的權限。

注意:這些角色只能在Admin數據庫下創建

5.所有數據庫角色

該分類下面的角色權限和數據庫角色權限一樣,區別在於它擁有的是所有數據庫的權限而不是指定數據庫下的權限。但是不擁有system.*相關集合、local、config數據庫的權限。

readAnyDatabase

readWriteAnyDatabase

userAdminAnyDatabase

dbAdminAnyDatabase

注意:這些角色只能在Admin數據庫下創建

6.超級權限角色

root:該角色擁有所有權限,該角色包含readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin roles, restore, and backup角色。

注意:該角色只能在創建在Admin庫中

7.內部角色 

__system:該角色為系統內部角色,比如復制集成員、mongos使用。

三、創建用戶

1.創建用戶

在admin中創建root角色用戶

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

2.刪除用戶

use到具體的數據庫下面去執行dropUser命令

 

use test;
db.dropUser("test");

注意:創建和刪除用戶都要在對應的數據庫下。

四、向用戶添加和刪除角色

1.創建只讀用戶

切換到test數據庫下創建read角色用戶

use test

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

2.驗證權限

提示沒有權限插入集合。

3.修改用戶權限

update命令會替換原有的權限

----更新用戶權限
db.updateUser( "abc",
{
roles:[
         { role : "readWrite", db : "abc"  }
      ]
}
);

如果是增加權限和回收權限使用以下命令:

增加權限

db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

The grantRolesToUser method takes the following arguments:

Parameter Type Description
user string The name of the user to whom to grant roles.
roles array An array of additional roles to grant to the user.
writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.
db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"},{role:"read", db:"testDB"}])

回收權限

db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )

The revokeRolesFromUser method takes the following arguments:

Parameter Type Description
user string The name of the user from whom to revoke roles.
roles array The roles to remove from the user.
writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.

 

五、密碼管理 

 1.修改密碼

db.updateUser(
   "root",
   {
      pwd: "abc"
   }
)

 

 

 

備注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接,否則保留追究責任的權利。

《歡迎交流討論》

 


免責聲明!

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



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