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

pursuer.chen發表於2018-03-02

一、概述

本篇文章主要介紹如何建立使用者和角色相關概念,同時對角色的新增和刪除做了相關介紹。

 

版本: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:

ParameterTypeDescription
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:

ParameterTypeDescription
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

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

《歡迎交流討論》

 

相關文章