最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MongoDB的角色管理

 更新時間:2021年03月25日 10:01:13   作者:AsiaYe  
這篇文章主要介紹了詳解MongoDB的角色管理的相關資料,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下

NO.1 MongoDB內建角色

內建角色的種類和特點?

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

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

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

數(shù)據(jù)庫用戶角色:

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

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

readWrite:擁有read角色的所有權限,并且可以修改所有非系統(tǒng)集合和system.js集合上的數(shù)據(jù)

數(shù)據(jù)庫管理角色:

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

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

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

集群管理角色:

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

clusterManager:提供對集群進行管理和監(jiān)控的權限

clusterMonitor:提供對監(jiān)控工具的只讀訪問權限

hostManager:提供監(jiān)控和管理服務器的權限

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

備份和恢復角色:

此類角色只能在admin數(shù)據(jù)庫中備份和恢復。

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

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

全數(shù)據(jù)庫角色

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

超級用戶:

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

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

內部角色:

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

MongoDB中的角色特點

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

NO.2 創(chuàng)建自定義角色

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

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

1、在一般數(shù)據(jù)庫上創(chuàng)建的角色,只適用于當前數(shù)據(jù)庫

2、在admin數(shù)據(jù)庫上創(chuàng)建的角色,可適用于所有數(shù)據(jù)庫

3、創(chuàng)建角色時,角色名字不能重復,否則報錯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為指定數(shù)據(jù)庫或者集合,若設置為空,則默認當前數(shù)據(jù)庫的全部集合。

actions:指定權限

范例:

1、首先我們創(chuàng)建一個角色:

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這個數(shù)據(jù)庫下面的test集合的查找、插入、更新權限。

同時它集成了系統(tǒng)的內建權限read,內建權限的生效數(shù)據(jù)庫是yeyz1

2、使用show roles查看當前角色的創(chuàng)建情況

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"
        }
    ]
}

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

4、開始認證并執(zhí)行相關操作。

[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實現(xiàn)增刪改查

    MongoDB實現(xiàn)增刪改查

    本文詳細講解了MongoDB實現(xiàn)增刪改查的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • mongodb 修改器($inc/$set/$unset/$push/$pop/upsert)

    mongodb 修改器($inc/$set/$unset/$push/$pop/upsert)

    對于文檔的更新除替換外,針對某個或多個文檔只需要部分更新可使用原子的更新修改器,能夠高效的進行文檔更新。更新修改器是中特殊的鍵
    2017-04-04
  • MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)

    MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)

    這篇文章主要給大家介紹了關于MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-09-09
  • mongodb與mysql命令詳細對比

    mongodb與mysql命令詳細對比

    MongoDB的好處挺多的,比如多列索引,查詢時可以用一些統(tǒng)計函數(shù),支持多條件查詢,但是目前多表查詢是不支持的,可以想辦法通過數(shù)據(jù)冗余來解決多表查詢的問題
    2013-08-08
  • MongoDB創(chuàng)建一個索引而性能提升1000倍示例代碼

    MongoDB創(chuàng)建一個索引而性能提升1000倍示例代碼

    這篇文章主要給大家介紹了關于如何在MongoDB中創(chuàng)建一個索引而性能提升1000倍的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Windows平臺安裝MongoDB數(shù)據(jù)庫

    Windows平臺安裝MongoDB數(shù)據(jù)庫

    這篇文章介紹了Windows平臺安裝MongoDB數(shù)據(jù)庫的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 關于mongoDB數(shù)據(jù)庫添加賬號的問題

    關于mongoDB數(shù)據(jù)庫添加賬號的問題

    這篇文章主要介紹了mongoDB數(shù)據(jù)庫添加賬號的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • mongodb中按天進行聚合查詢的實例教程

    mongodb中按天進行聚合查詢的實例教程

    這篇文章主要給大家介紹了關于mongodb中按天進行聚合查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mongodb具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • MongoDB 常用的crud操作語句

    MongoDB 常用的crud操作語句

    本篇介紹了 MongoDB 的基本 CRUD 操作,可以看到 MongoDB 的語法極其簡潔,而且可以使用鏈式調用的方式進行操作。操作的參數(shù)也很固定,且方法名稱很明確,上手來說是很容易的
    2021-06-06
  • 為MongoDB數(shù)據(jù)庫注冊windows服務

    為MongoDB數(shù)據(jù)庫注冊windows服務

    這篇文章介紹了為MongoDB數(shù)據(jù)庫注冊windows服務的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

花莲市| 大连市| 福贡县| 扎赉特旗| 阜南县| 抚远县| 仪征市| 凤阳县| 闽侯县| 政和县| 贵阳市| 麻城市| 昆山市| 静海县| 石阡县| 五大连池市| 绍兴县| 平凉市| 沙洋县| 怀柔区| 天峨县| 吴桥县| 南乐县| 中超| 吴堡县| 永春县| 通江县| 蛟河市| 绥阳县| 苏尼特左旗| 五大连池市| 德阳市| 北京市| 丰县| 台山市| 丹寨县| 伊金霍洛旗| 衡南县| 贞丰县| 个旧市| 武隆县|