一、概述
本篇文章主要介紹如何創建用戶和角色相關概念,同時對角色的添加和刪除做了相關介紹。
版本: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 writeConcern document 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 writeConcern document takes the same fields as the getLastError command. |
五、密碼管理
1.修改密碼
db.updateUser( "root", { pwd: "abc" } )
備注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接,否則保留追究責任的權利。 《歡迎交流討論》 |