前提条件
?
?
1.在该
数据库资源上的createRole行为。 ? ?
?
2.在该数据库上grantRole行为给新角色指定权限以及指定继承的角色。
?
内嵌角色userAdmin和userAdminAnyDatabase提供了它们各自资源的createRole和grantRole行为。
?
创建一个角色管理当前操作
?
下面的示例创建了角色manageOpRole,只提供了运行db.currentOp()和db.killOp()的权限。
?
1. 使用适当的权限连接到MongoDB。 ??
?
使用在前提条件部分指定的权限,连接到mongod或mongos。
? ??
下面的过程创建了一个用户管理员siteUserAdmin:
?
use admin ??
db.createUser( ? ?
? { ? ?
? ? user: "siteUserAdmin", ? ?
? ? pwd: "password", ? ?
? ? roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ? ?
? } ? ?
)
?
登录到MongoDB: ??
?
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin
siteUserAdmin拥有在admin以及其他数据库创建角色的权限。
?
2. 创建一个新的角色管理当前操作。
? ?
manageOpRole有权限在多个数据库以及cluster资源操作。因此,你必须在admin数据库创建角色。
?
use admin ??
db.createRole( ? ?
? ?{ ? ?
? ? ?role: "manageOpRole", ? ?
? ? ?privileges: [ ? ?
? ? ? ?{ resource: { cluster: true }, actions: [ "killop", "inprog" ] }, ? ?
? ? ? ?{ resource: { db: "", collection: "" }, actions: [ "killCursors" ] } ? ?
? ? ?], ? ?
? ? ?roles: [] ? ?
? ?} ? ?
)
?
新角色被授权能杀掉任何操作。
?
警告: ??
?
终止运行中的操作要极其小心。只使用db.killOp()来终止客户端发起的操作而不会终止内部数据库操作。
?
内嵌的角色ClusterMonitor也提供了权限运行db.currentOp()及其他权限,内嵌的角色hostManager提供了权限运行db.killOp()以及其他权限。
?
创建一个角色运行mongostat
?
下面的示例创建一个角色mongostatRole提供了只有运行mongostat的权限。
?
1. 使用适当的权限连接到MongoDB。 ??
?
使用在前提条件部分指定的权限,连接到mongod或mongos。?
? ?
下面的过程创建了一个用户管理员siteUserAdmin:
?
use admin ??
db.createUser( ? ?
? { ? ?
? ? user: "siteUserAdmin", ? ?
? ? pwd: "password", ? ?
? ? roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ? ?
? } ? ?
)
?
登录到MongoDB: ??
?
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin
siteUserAdmin拥有在admin以及其他数据库创建角色的权限。
?
2.创建一个新的角色来管理当前操作。?
??
mongostatRole有权限在cluster资源操作。因此,你必须在admin数据库创建角色。
?
use admin ??
db.createRole( ? ?
? ?{ ? ?
? ? ?role: "mongostatRole", ? ?
? ? ?privileges: [ ? ?
? ? ? ?{ resource: { cluster: true }, actions: [ "serverStatus" ] } ? ?
? ? ?], ? ?
? ? ?roles: [] ? ?
? ?} ? ?
)
内嵌的角色clusterMonitor也提供了权限运行mongostat以及其他权限。