天天看点

MongoDB创建一个用户自定义角色

前提条件

在数据库中创建一个角色,你必须有:   

    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,如需转载请自行联系原作者