在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB管理用戶和角色
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點(diǎn)
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動(dòng)遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點(diǎn)
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗(yàn)證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB管理用戶和角色

本教程提供了MongoDB授權(quán)模式下的用戶和角色管理示例。學(xué)習(xí)如何向MongoDB添加新用戶。

創(chuàng)建用戶定義的角色

角色授權(quán)用戶訪問MongoDB資源。 MongoDB提供了許多內(nèi)置的角色,管理員可以使用它們來控制對MongoDB系統(tǒng)的訪問。 但是,如果這些角色無法描述所需的權(quán)限集,則可以在特定數(shù)據(jù)庫中創(chuàng)建新角色。

除了在管理數(shù)據(jù)庫中創(chuàng)建的角色外,角色只能包含適用于其數(shù)據(jù)庫的權(quán)限,并且只能繼承其數(shù)據(jù)庫中的其他角色。

在管理數(shù)據(jù)庫中創(chuàng)建的角色可以包括適用于管理數(shù)據(jù)庫,其他數(shù)據(jù)庫或群集資源的權(quán)限,并且可以從其他數(shù)據(jù)庫中的角色以及管理數(shù)據(jù)庫繼承。

要?jiǎng)?chuàng)建新角色,可使用db.createRole()方法,指定permissions數(shù)組中的權(quán)限和roles數(shù)組中的繼承角色。

MongoDB使用數(shù)據(jù)庫名稱和角色名稱的組合來唯一定義角色。 每個(gè)角色的范圍限定在創(chuàng)建角色的數(shù)據(jù)庫中,但MongoDB將所有角色信息存儲在admin數(shù)據(jù)庫的admin.system.roles集合中。

先決條件

要在數(shù)據(jù)庫中創(chuàng)建角色,您必須具有:

  • 對該數(shù)據(jù)庫資源的createRole操作。
  • 對該數(shù)據(jù)庫的grantRole操作指定新角色的權(quán)限以及指定要繼承的角色。

內(nèi)置角色 userAdminuserAdminAnyDatabase 在其各自的資源上提供 createRolegrantRole 操作。

創(chuàng)建角色來管理當(dāng)前操作

以下示例創(chuàng)建一個(gè)名為 manageOpRole 的角色,該角色僅提供運(yùn)行 db.currentOp()db.killOp()的權(quán)限。

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

使用“先決條件”部分指定的權(quán)限連接到 mongodmongos 。

以下過程使用在“啟用認(rèn)證”中創(chuàng)建的用戶:myUserAdmin。

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

myUserAdmin具有在管理員以及其他數(shù)據(jù)庫中創(chuàng)建角色的權(quán)限。

第二步:創(chuàng)建一個(gè)新角色來管理當(dāng)前操作

manageOpRole具有對多個(gè)數(shù)據(jù)庫以及群集資源的權(quán)限。 因此,您必須在管理數(shù)據(jù)庫中創(chuàng)建該角色。

use admin
db.createRole(
   {
     role: "manageOpRole",
     privileges: [
       { resource: { cluster: true }, actions: [ "killop", "inprog" ] },
       { resource: { db: "", collection: "" }, actions: [ "killCursors" ] }
     ],
     roles: []
   }
)

新角色授予殺死/終止任何操作的權(quán)限。

警告: 終止運(yùn)行操作非常小心。只能使用db.killOp()方法或killOp命令終止客戶端發(fā)起的操作,并且不會(huì)終止內(nèi)部數(shù)據(jù)庫操作。

創(chuàng)建角色用來運(yùn)行 mongostat

以下示例創(chuàng)建一個(gè)名為 mongostatRole 的角色,該角色僅提供運(yùn)行 mongostat 的權(quán)限。

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

使用“先決條件”部分指定的權(quán)限連接到 mongod 或 mongos 。

以下過程使用在啟用認(rèn)證中創(chuàng)建的用戶:myUserAdmin。

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

myUserAdmin具有在管理員以及其他數(shù)據(jù)庫中創(chuàng)建角色的權(quán)限。

第二步:創(chuàng)建一個(gè)新角色來管理當(dāng)前的操作

mongostatRole具有作用于群集資源的權(quán)限。 因此,您必須在管理數(shù)據(jù)庫中創(chuàng)建該角色。

use admin
db.createRole(
   {
     role: "mongostatRole",
     privileges: [
       { resource: { cluster: true }, actions: [ "serverStatus" ] }
     ],
     roles: []
   }
)

修改現(xiàn)有用戶的訪問權(quán)限

先決條件

  • 必須對數(shù)據(jù)庫具有grantRole操作才能在該數(shù)據(jù)庫上授予角色。
  • 必須在數(shù)據(jù)庫上具有revokeRole操作以撤銷該數(shù)據(jù)庫上的角色。
  • 要查看角色的信息,必須明確授予該角色,或必須對該角色的數(shù)據(jù)庫具有viewRole操作。

執(zhí)行步驟

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

以具有先決條件部分中指定的權(quán)限的用戶身份連接到 mongodmongos

以下過程使用在啟用認(rèn)證中創(chuàng)建的用戶:myUserAdmin。

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

第二步:識別用戶的角色和權(quán)限

要顯示要修改的用戶的角色和權(quán)限,請使用db.getUser()db.getRole()方法。

例如,要查看在示例中創(chuàng)建的 reportsUser 的角色,執(zhí)行以下命令:

use reporting
db.getUser("reportsUser")

要顯示在 “accounts” 數(shù)據(jù)庫上由 readWrite 角色授予用戶的權(quán)限,請執(zhí)行以下操作:

use accounts
db.getRole( "readWrite", { showPrivileges: true } )

第三步:確定授予或撤銷的權(quán)限

如果用戶需要額外的權(quán)限,則向用戶授予具有所需權(quán)限集的角色或角色。 如果此類角色不存在,請使用適當(dāng)?shù)臋?quán)限集創(chuàng)建新角色。

撤銷由現(xiàn)有角色提供的特權(quán)子集:撤銷原始角色并授予僅包含所需權(quán)限的角色。如果角色不存在,您需要?jiǎng)?chuàng)建新角色。

第四步:修改用戶的訪問權(quán)限

4.1. 撤銷角色

使用db.revokeRolesFromUser()方法撤銷角色。以下示例操作從account數(shù)據(jù)庫上刪除用戶reportsUserreadWrite 角色:

use reporting
db.revokeRolesFromUser(
    "reportsUser",
    [
      { role: "readWrite", db: "accounts" }
    ]
)

4.2. 授予角色

使用db.grantRolesToUser()方法授予角色。 例如,以下操作授予reportsUser用戶account數(shù)據(jù)庫上的讀取角色:

use reporting
db.grantRolesToUser(
    "reportsUser",
    [
      { role: "read", db: "accounts" }
    ]
)

對于分片集群,用戶的更改將在命令運(yùn)行的 mongos 上即時(shí)生效。但是,對于群集中的其他mongos 實(shí)例,用戶緩存可能會(huì)等待10分鐘才能刷新。請參閱userCacheInvalidationIntervalSecs。

修改現(xiàn)有用戶的密碼

先決條件

要修改數(shù)據(jù)庫上另一個(gè)用戶的密碼,您必須對該數(shù)據(jù)庫具有changeAnyPassword操作。

操作步驟:

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

以具有先決條件部分中指定的權(quán)限的用戶身份連接到 mongodmongos 。

以下過程使用在啟用認(rèn)證中創(chuàng)建的用戶:myUserAdmin

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

第二步:更改密碼

將用戶的用戶名和新密碼傳遞給db.changeUserPassword()方法。

以下操作將reporting用戶的密碼更改為:SOh3TbYhxuLiW8ypJPxmt1oOfL

db.changeUserPassword("reporting", "SOh3TbYhxuLiW8ypJPxmt1oOfL")

查看用戶的角色

先決條件

要查看其他用戶的信息,您必須對其他用戶的數(shù)據(jù)庫具有viewUser操作。

用戶可以查看自己的信息。

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

以具有先決條件部分中指定的權(quán)限的用戶身份連接到 mongodmongos 。

以下過程使用在啟用認(rèn)證中創(chuàng)建的用戶:myUserAdmin。

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

第二步:查看用戶的角色

使用usersInfo命令或db.getUser()方法顯示用戶信息。

例如,要查看在示例中創(chuàng)建的 reportsUser 的角色,請發(fā)出:

use reporting
db.getUser("reportsUser")

在返回的文檔中,roles字段顯示reportsUser的所有角色:

...
"roles" : [
   { "role" : "readWrite", "db" : "accounts" },
   { "role" : "read", "db" : "reporting" },
   { "role" : "read", "db" : "products" },
   { "role" : "read", "db" : "sales" }
]

查看角色的權(quán)限

先決條件

要查看角色的信息,您必須明確授予該角色,或必須對該角色的數(shù)據(jù)庫具有 viewRole 操作。

第一步:使用相應(yīng)的權(quán)限連接到MongoDB

以具有先決條件部分中指定的權(quán)限的用戶身份連接到 mongodmongos 。

以下過程使用在啟用認(rèn)證中創(chuàng)建的用戶:myUserAdmin

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

第二步:查看角色授予的權(quán)限

對于給定的角色,請使用db.getRole()方法或rolesInfo命令與showPrivileges選項(xiàng)一起執(zhí)行:

例如,要查看在product數(shù)據(jù)庫上由讀取角色授予的權(quán)限,請使用以下操作,問題如下:

use products
db.getRole( "read", { showPrivileges: true } )

在返回的文檔中,有兩個(gè)數(shù)組:privilegesinheritedPrivileges。權(quán)限列出了角色指定的權(quán)限,并排除了從其他角色繼承的權(quán)限。 inheritedPrivileges列出了由此角色授予的所有權(quán)限,這兩個(gè)角色都是直接指定的并被繼承。 如果該角色不能從其他角色繼承,則兩個(gè)字段是相同的。

...
"privileges" : [
  {
    "resource": { "db" : "products", "collection" : "" },
    "actions": [ "collStats","dbHash","dbStats","find","killCursors","planCacheRead" ]
  },
  {
    "resource" : { "db" : "products", "collection" : "system.js" },
    "actions": [ "collStats","dbHash","dbStats","find","killCursors","planCacheRead" ]
  }
],
"inheritedPrivileges" : [
  {
    "resource": { "db" : "products", "collection" : "" },
    "actions": [ "collStats","dbHash","dbStats","find","killCursors","planCacheRead" ]
  },
  {
    "resource" : { "db" : "products", "collection" : "system.js" },
    "actions": [ "collStats","dbHash","dbStats","find","killCursors","planCacheRead" ]
  }
]