前提條件
在資料庫中建立一個角色,你必須有:
1.在該資料庫資源上的createRole行為。
2.在該資料庫上grantRole行為給新角色指定權限以及指定繼承的角色。
内嵌角色userAdmin和userAdminAnyDatabase提供了它們各自資源的createRole和grantRole行為。
建立一個角色管理目前操作
下面的示例建立了角色manageOpRole,隻提供了運作db.currentOp()和db.killOp()的權限。
1. 使用适當的權限連接配接到MongoDB。
使用在前提條件部分指定的權限,連接配接到mongod或mongos。
下面的過程建立了一個使用者管理者siteUserAdmin:
1
2
3
4
5
6
7
8
<code>use admin </code>
<code>db.createUser( </code>
<code> </code><code>{ </code>
<code> </code><code>user</code><code>: </code><code>"siteUserAdmin"</code><code>, </code>
<code> </code><code>pwd: </code><code>"password"</code><code>, </code>
<code> </code><code>roles: [ { role: </code><code>"userAdminAnyDatabase"</code><code>, db: </code><code>"admin"</code> <code>} ] </code>
<code> </code><code>} </code>
<code>)</code>
登入到MongoDB:
<code>mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin</code>
siteUserAdmin擁有在admin以及其他資料庫建立角色的權限。
2. 建立一個新的角色管理目前操作。
manageOpRole有權限在多個資料庫以及cluster資源操作。是以,你必須在admin資料庫建立角色。
9
10
11
<code>db.createRole( </code>
<code> </code><code>{ </code>
<code> </code><code>role: </code><code>"manageOpRole"</code><code>, </code>
<code> </code><code>privileges</code><code>: [ </code>
<code> </code><code>{ resource: { cluster: </code><code>true</code> <code>}, actions: [ </code><code>"killop"</code><code>, </code><code>"inprog"</code> <code>] }, </code>
<code> </code><code>{ resource: { db: </code><code>""</code><code>, collection: </code><code>""</code> <code>}, actions: [ </code><code>"killCursors"</code> <code>] } </code>
<code> </code><code>], </code>
<code> </code><code>roles: [] </code>
<code> </code><code>} </code>
新角色被授權能殺掉任何操作。
警告:
終止運作中的操作要極其小心。隻使用db.killOp()來終止用戶端發起的操作而不會終止内部資料庫操作
。
内嵌的角色ClusterMonitor也提供了權限運作db.currentOp()及其他權限,内嵌的角色hostManager提供了權限運作db.killOp()以及其他權限。
建立一個角色運作mongostat
下面的示例建立一個角色mongostatRole提供了隻有運作mongostat的權限。
2.建立一個新的角色來管理目前操作。
mongostatRole有權限在cluster資源操作。是以,你必須在admin資料庫建立角色。
<code> </code><code>role: </code><code>"mongostatRole"</code><code>, </code>
<code> </code><code>{ resource: { cluster: </code><code>true</code> <code>}, actions: [ </code><code>"serverStatus"</code> <code>] } </code>
内嵌的角色clusterMonitor也提供了權限運作mongostat以及其他權限。
本文轉自UltraSQL51CTO部落格,原文連結: http://blog.51cto.com/ultrasql/1706466,如需轉載請自行聯系原作者