一、概述 本篇文章主要介紹如何創建用戶和角色相關概念,同時對角色的添加和刪除做了相關介紹。 版本:3.6.2 二、角色相關概念 1.資料庫用戶角色 read:該角色擁有數據的只讀許可權,系統集合以及system.indexes,system.js,system.namespaces集合除外。 read ...
一、概述
本篇文章主要介紹如何創建用戶和角色相關概念,同時對角色的添加和刪除做了相關介紹。
版本: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 admin;
db.system.users.remove({"user":"root","db":"admin"})
註意:創建和刪除用戶都要在對應的資料庫下。
四、向用戶添加和刪除角色
1.創建只讀用戶
切換到test資料庫下創建read角色用戶
use test db.createUser( { user:"test", pwd:"test", roles:[{role:"read",db:"test"} ] } );
2.驗證許可權
提示沒有許可權插入集合。
3.添加角色許可權
use admin ---需要切換到root角色用戶才能修改system相關的集合 db.auth("dba","dba") db.system.users.update(
{"user":"test","db":"test"},
{$push:{"roles":{"role":"readWrite","db":"test"}}}
);
註意:用戶資料庫許可權雖然是在用戶資料庫創建,但是所有的用戶信息都存儲在admin資料庫下的system.users集合中。
再次使用test用戶執行插入測試
已經測試成功
4.刪除角色許可權
---切換到admin庫 use admin; ---驗證許可權 db.auth("dba","dba") ---更新用戶表,刪除test用戶readWrite角色 db.system.users.update(
{"user":"test","db":"test"},
{$pull:{"roles":{"role":"readWrite"}}}
);
test用戶readWrite角色已刪除
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接,否則保留追究責任的權利。 《歡迎交流討論》 |