1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    詳解MongoDB的角色管理_MongoDB

    來源:腳本之家  責任編輯:小易  

    NO.1 MongoDB內建角色

    內建角色的種類和特點?

    想要了解內建角色,還是少不了下面這張圖,在MongoDB中,用戶的權限是通過角色綁定的方法來分配的。把某個角色綁定在某個用戶上,那么這個用戶就有這個角色對應的權限了。

    MongoDB 4.0中的內建角色類型如下:

    這里對上面的內建角色所擁有的權限做以說明:

    數據庫用戶角色:

    read:用于讀取所有非系統集合,以及下面三個系統集合:

    system.indexes、system.js以及system.namesp

    readWrite:擁有read角色的所有權限,并且可以修改所有非系統集合和system.js集合上的數據

    數據庫管理角色:

    dbAdmin:提供管理相關功能,例如查詢統計信息,索引管理等

    userAdmin:提供管理數據庫角色及用戶的權限,具有這個角色的用戶可以為當前數據庫的任何用戶,包括自己,分配任何角色和權限

    dbOwner:提供數據庫所有者的權限,它可以對數據庫進行任何管理操作,這個角色結合了readWrite、dbAdmin、userAdmin三種角色授予的權限。

    集群管理角色:

    此類角色提供了管理整個MongoDB的權限,角色只能在admin數據庫中進行授權。

    clusterManager:提供對集群進行管理和監控的權限

    clusterMonitor:提供對監控工具的只讀訪問權限

    hostManager:提供監控和管理服務器的權限

    clusterAdmin:提供最高的集群管理訪問權限,這個角色擁有clusterManager、clusterMonitor和hostManager角色授予的權限,除此之外,它還具有dropDatabase()權限

    備份和恢復角色:

    此類角色只能在admin數據庫中備份和恢復。

    backup:提供備份數據的權限,使用mongodump備份整個mongod實例

    restore:提供還原數據庫所需的權限,使用戶可以通過mongorestore恢復數據

    全數據庫角色

    全數據庫角色用于管理所有自定義數據庫,但是不包含local和config數據庫,它只能被授予在admin用戶下。

    超級用戶:

    root,這個不需要過多解釋。

    用戶只能在admin數據庫中配置這個權限,擁有這個角色的用戶可以對所有數據庫進行任何操作。

    內部角色:

    __system僅僅用于MongoDB內部的管理,不建議將這個權限分配個用戶,防止用戶對內部系統進行操作。

    MongoDB中的角色特點

    在MongoDB中,授予用戶某個角色的權限時,默認授予當前數據庫 角色授權可以授予集合級別的粒度 角色授權分成系統集合以及非系統集合的訪問權限 每個數據庫中的角色都可以分成一般角色和管理角色 管理數據庫可以使用所有的內建角色

    NO.2 創建自定義角色

        上面的內容,更多的是講述怎樣使用內建角色,這里我們來看創建自定義角色的,

    自定義角色有如下三個特點:

    1、在一般數據庫上創建的角色,只適用于當前數據庫

    2、在admin數據庫上創建的角色,可適用于所有數據庫

    3、創建角色時,角色名字不能重復,否則報錯alread exist

    例如我們想給一個賬號分配insert,update、select、而不給delete權限。

     語法:

    db.createRole(
    {
     role:"<name>",
     privileges:[
           {resource:{<resource>},actions:["action",...]}
          ],
     roles:[
         {role:"<role>",db:"<database>"}|"<role>"
        ],
     authenticationRestrictions:[
                   {clientSource:["<IP 地址>"|"<CIDR range>",...],
                   {serverAddress:["<IP 地址>"|"<CIDR range>",...]}
                  ]
    }
    )

    其中,resource為指定數據庫或者集合,若設置為空,則默認當前數據庫的全部集合。

    actions:指定權限

    范例:

    1、首先我們創建一個角色:

    use admin
    
    db.createRole(
    {
     role:"role_yeyz",
     privileges:[
           {resource:{db:"yeyz",collection:"test"},
           actions:["find","insert","update"]
           }
          ],
     roles:[
         {role:"read",db:"yeyz1"}
        ]
    }
    )

    這個角色的名字叫做role_yeyz,它具有yeyz這個數據庫下面的test集合的查找、插入、更新權限。

    同時它集成了系統的內建權限read,內建權限的生效數據庫是yeyz1

    2、使用show roles查看當前角色的創建情況

    use admin
    
    show roles
    
    {
        "role" : "role_yeyz",
        "db" : "admin",
        "isBuiltin" : false,
        "roles" : [
            {
                "role" : "read",
                "db" : "yeyz1"
            }
        ],
        "inheritedRoles" : [
            {
                "role" : "read",
                "db" : "yeyz1"
            }
        ]
    }

    這里它只顯示了內建角色的信息,注意,這個角色所在的db是admin

    3、此時我們將這個角色,授予給一個新的用戶,yeyz_1

    > db.createUser(
    ... {
    ... user: "yeyz_1",
    ... pwd: "123456", 
    ... roles: [ { role: "role_yeyz", db: "admin" }]
    ... }
    ... )
    Successfully added user: {
        "user" : "yeyz_1",
        "roles" : [
            {
                "role" : "role_yeyz",
                "db" : "admin"
            }
        ]
    }

    我們創建了一個新的用戶yeyz_1,這個用戶繼承了我們第一步的自定義角色role_yeyz

    4、開始認證并執行相關操作。

    [root@VM-0-14-centos ~]# mongo
    MongoDB shell version v4.0.6
    connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("b9daecb8-ffd8-44a7-8af0-d1115057539a") }
    MongoDB server version: 4.0.6
    > use admin
    switched to db admin
    > db.auth("yeyz_1","123456")
    1
    > use yeyz
    switched to db yeyz
    
    ### 測試查找,成功
    > db.test.find()
    { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "aaa" }
    
    ### 測試插入,成功
    > db.test.insert({"name":"bbb"})
    WriteResult({ "nInserted" : 1 })
    > db.test.find()
    { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "aaa" }
    { "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" }
    
    ### 測試更新,成功
    > db.test.update({"name":"aaa"},{$set:{"name":"ccc"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > 
    > db.test.find()
    { "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }
    { "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" }
    
    ### 測試刪除,失敗,和我們預期一致,因為role_yeyz這個角色,沒有刪除權限。
    > db.test.remove({"name":"bbb"})
    WriteCommandError({
        "ok" : 0,
        "errmsg" : "not authorized on yeyz to execute command { delete: \"test\", ordered: true, lsid: { id: UUID(\"b9daecb8-ffd8-44a7-8af0-d1115057539a\") }, $db: \"yeyz\" }",
        "code" : 13,
        "codeName" : "Unauthorized"
    })

    以上就是詳解MongoDB的角色管理的詳細內容,更多關于MongoDB的角色管理的資料請關注真格學網其它相關文章!

    您可能感興趣的文章:MongoDB數據庫用戶角色和權限管理詳解

  3. 本文相關:
  4. mongodb在windows下的安裝步驟分享
  5. windows下把mongodb安裝為系統服務的方法
  6. mongodb操作類封裝實例代碼
  7. mongodb游標超時問題的4種解決方法
  8. ubuntu下安裝mongodb 3.4的詳細過程
  9. mongodb復制集原理詳解
  10. java操作mongodb數據庫示例分享
  11. mongodb 副本集的搭建過程
  12. centos 6.4創建mongodb副本集
  13. windows下安裝mongodb以及node.js連接mongodb實例
  14. mongodb中的用戶,角色,權限該怎么設計
  15. mongodb 連接池,mongodb如何管理連接的?有必要實...
  16. 如何對MongoDB 3.2.7進行用戶權限管理配置
  17. mongodb怎么進行權限管理對一個表的權限
  18. 誰是最好的圖形化 MongoDB 管理工具
  19. java用spring管理mongodb 怎么修改mongodb中list中...
  20. mongodb replset有哪幾種角色
  21. mongodb的基本概念
  22. mongodb如何管理連接的?有必要實現連接池嗎
  23. mongodb3.0沒有admin數據庫了,怎么添加超級管理員
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁mongodb數據庫用戶角色和權限管理詳解mongodb在windows下的安裝步驟分享windows下把mongodb安裝為系統服務的方法mongodb操作類封裝實例代碼mongodb游標超時問題的4種解決方法ubuntu下安裝mongodb 3.4的詳細過程mongodb復制集原理詳解java操作mongodb數據庫示例分享mongodb 副本集的搭建過程centos 6.4創建mongodb副本集windows下安裝mongodb以及node.js連接mongodb實例mongodb常用操作命令大全mongodb各種查詢操作詳解mongodb數據庫插入、更新和刪除操mongodb 數據庫操作--備份 還原 mongodb插入數據的3種方法mongodb中使用distinct去重的簡單淺談mysql和mariadb區別(mariadbmongodb整庫備份與還原以及單個cmongodb查詢操作限制返回字段的方mongodb 實現遠程連接mongodb中如何使用join操作詳解mongodb在windows下安裝與配置方案centos系統下mongodb安裝及配置教程mongodb多表關聯查詢操作實例詳解mongodb系列教程(八):gridfs存儲詳解mongodb exception: $concat only suppor淺析mongodb性能優化的相關問題mysql和mongodb設計實例對比分析詳解mongodb管理命令mongodb社區版和企業版的差別對照表
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载