MongoDB數據庫學習筆記(三)添加用戶,配置權限

數據庫角色解析

MongoDB數據庫的內置用戶角色有以下幾種:

  • 數據庫用戶角色
  • 數據庫管理員角色
  • 集羣管理員角色
  • 備份和恢復角色
  • 所有數據庫角色
  • 超級用戶角色

1.數據庫用戶角色

1.1'read'角色包含讀取所有非系統集合數據,通俗理解就是有權限讀取除去系統自帶的數據庫(admin,local,config)之外的數據庫。

1.2'readWrite'角色包含read角色的權限同時增加了對非系統集合數據的修改權限,通俗理解就是在擁有‘read’查詢權限的基礎上增加了寫入和刪除的權限。

 

2.數據庫管理角色

2.1‘dbAdmin’角色包含執行某些管理任務(與schema相關、索引、收集統計信息)的權限,該角色不包含用戶和角色管理的權限。通俗理解就是授予執行管理任務的特權.(實際測試在數據方面既不包含‘read’也不包含‘readWrite’,在權限方面既不能添加和修改用戶,也不能刪除用戶【很尷尬】。考慮可能是用於控制執行管理任務的權限,由於還沒有用到所以暫時不是很理解【嘻嘻】

2.2‘userAdmin’角色包含對當前數據庫創建和修改角色和用戶的權限。該角色允許向其它任何用戶(包括自身)授予任何權限,所以這個角色也提供間接對超級用戶(root)的訪問權限,如果限定在admin數據中,也包括集羣管理的權限。通俗理解就是允許您在當前數據庫上創建和修改用戶和角色(實際測試在數據方面既不包含‘read’也不包含‘readWrite’,用戶權限方面可以添加用戶【db.createUser】、可以刪除用戶【db.dropUser】、但是不能修改用戶【db.updateUser】)。

2.2‘dbOwner’角色包含對數據所有的管理操作權限。即包含角色readWrite、dbAdmin和userAdmin的權限。通俗理解就是上面角色的權限都包含。(實際測試在數據方面包含增刪改查,用戶權限方面可以創建用戶【db.createUser】,刪除用戶【db.dropUser】但是不能修改用戶【db.updateUser】

 

3.集羣管理員角色

3.1'clusterManager'角色包含對集羣監控和管理操作的權限。擁有此角色的用戶能夠訪問集羣中的config數據庫和local數據庫。

3.2'clusterMonitor'角色包含針對監控工具具有隻讀操作的權限。

3.3'hostManager'角色包含針對數據庫服務器的監控和管理操作權限。

3.4'clusterAdmin'角色包含MongoDB集羣管理最高的操作權限。該角色包含clusterManagerclusterMonitorhostManager三個角色的所有權限,並且還擁有dropDatabase操作命令的權限。

 

4.備份和恢復角色

4.1'backup'角色包含備份MongoDB數據最小的權限,提供備份數據所需的特權。

4.2'restore'角色包含從備份文件中還原恢復MongoDB數據(除了system.profile集合)的權限。

 

5.全數據庫級角色

5.1'readAnyDatabase'角色包含對除了config和local之外所有數據庫的只讀權限。同時對於整個集羣包含listDatabases命令操作。

5.2'readWriteAnyDatabase'角色包含對除了config和local之外所有數據庫的讀寫權限。同時對於整個集羣包含listDatabases命令操作。

5.3'userAdminAnyDatabase'角色包含類似於userAdmin角色對於所有數據庫的用戶管理權限,除了config數據庫和local數據庫。

5.4'dbAdminAnyDatabase'角色包含類似於dbAdmin角色對於所有數據庫管理權限,除了config數據庫和local數據庫。同時對於整個集羣包含listDatabases命令操作。

 

6.超級用戶角色

6.1'root'角色包含角色readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore和backup聯合之後所有的權限。

 

總結:

由於目前僅僅瞭解了MongoDB數據庫的基礎操作(數據和數據庫用戶的增刪改查)不知道如何測試其他角色的權限,暫時不做研究,簡單記載一下,方便查閱,在後面的學習中和實際應用中理解角色的權限)。

通過以上對內置角色的說明,總結一下較爲常用的內置角色,如下表:

角色 權限描述
read 可以讀取指定數據庫中任何數據。
readWrite 可以讀寫指定數據庫中任何數據,包括創建、重命名、刪除集合。
readAnyDatabase 可以讀取所有數據庫中任何數據(除了數據庫config和local之外)。
readWriteAnyDatabase 可以讀寫所有數據庫中任何數據(除了數據庫config和local之外)。
dbAdmin 可以讀取指定數據庫以及對數據庫進行清理、修改、壓縮、獲取統計信息、執行檢查等操作。
dbAdminAnyDatabase 可以讀取任何數據庫以及對數據庫進行清理、修改、壓縮、獲取統計信息、執行檢查等操作(除了數據庫config和local之外)。
clusterAdmin 可以對整個集羣或數據庫系統進行管理操作。
userAdmin 可以在指定數據庫創建和修改用戶。
userAdminAnyDatabase 可以在指定數據庫創建和修改用戶(除了數據庫config和local之外)。

其次,瞭解到MongoDB可以創建自定義權限的角色,此處提一句,方面後面學習中注意一下。

 

數據庫用戶的增刪改查

1.添加用戶

db.createUser({user:'test3',pwd:'test3',roles:[{role:'dbAdmin',db:'test'}]})

2.修改用戶

db.updateUser("test",{roles:[{role:'readWrite',db:'test'}]})

3.查詢用戶

show users

4.刪除用戶

db.dropUser("test")

 

參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章