在线观看不卡亚洲电影_亚洲妓女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復制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達式
MongoDB查詢文檔
MongoDB關聯(lián)關系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB管理用戶和角色

本教程提供了MongoDB授權模式下的用戶和角色管理示例。學習如何向MongoDB添加新用戶。

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

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

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

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

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

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

先決條件

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

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

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

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

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

第一步:使用相應的權限連接到MongoDB

使用“先決條件”部分指定的權限連接到 mongodmongos

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

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

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

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

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

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

新角色授予殺死/終止任何操作的權限。

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

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

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

第一步:使用相應的權限連接到MongoDB

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

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

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

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

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

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

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

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

先決條件

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

執(zhí)行步驟

第一步:使用相應的權限連接到MongoDB

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

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

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

第二步:識別用戶的角色和權限

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

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

use reporting
db.getUser("reportsUser")

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

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

第三步:確定授予或撤銷的權限

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

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

第四步:修改用戶的訪問權限

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

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

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

先決條件

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

操作步驟:

第一步:使用相應的權限連接到MongoDB

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

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

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

第二步:更改密碼

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

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

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

查看用戶的角色

先決條件

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

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

第一步:使用相應的權限連接到MongoDB

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

以下過程使用在啟用認證中創(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" }
]

查看角色的權限

先決條件

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

第一步:使用相應的權限連接到MongoDB

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

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

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

第二步:查看角色授予的權限

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

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

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

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

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

上一篇:PHP連接MongoDB操作下一篇:MongoDB復制