dropConnections
定义
dropConnections
dropConnections
命令删除mongod
/mongos
实例到指定主机的传出连接。dropConnections
必须针对admin
数据库运行。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令的语法如下:
db.adminCommand( { dropConnections: 1, hostAndPort : [ "host1:port1", "host2:port2", ... ], comment: <any> } )
命令字段
该命令需要以下字段:
字段 | 类型 | 说明 |
---|---|---|
| 阵列 | 每个数组元素代表远程计算机的主机名和端口。 |
| any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
访问控制
如果部署强制执行身份验证/授权 ,则 dropConnections
命令需要对集群资源执行 dropConnections
操作。
在admin
数据库中创建用户定义的角色,其中privilege
数组包含以下文档:
{ "resource" : { "cluster" : true } }, "actions" : [ "dropConnections" ] }
使用
db.createUser()
在admin
数据库上创建具有自定义角色的用户。or
使用
db.grantRolesToUser()
将角色授予admin
数据库中的现有用户。
示例,以下操作在admin
数据库上创建一个用户定义的角色,并具有支持dropConnections
的特权:
db.getSiblingDB("admin").createRole( { "role" : "dropConnectionsRole", "privileges" : [ { "resource" : { "cluster" : true }, "actions" : [ "dropConnections" ] } ], "roles" : [] } )
将自定义角色分配给admin
数据库中的用户:
db.getSiblingDB("admin").createUser( { "user" : "dropConnectionsUser", "pwd" : "replaceThisWithASecurePassword", "roles" : [ "dropConnectionsRole" ] } )
创建的用户可以执行 dropConnections
。
有关用户创建的更多示例,请参阅在自托管部署上创建用户。 有关向现有数据库用户添加权限的教程,请参阅修改现有用户的访问权限。
行为
dropConnections
会自动忽略不包含远程计算机主机名和端口的 hostAndPort
元素。
例子
考虑一个副本集,其成员最近在oldhost.example.com:27017
中删除。 对每个活动的副本集节点运行以下dropConnections
命令,可确保不存在指向oldhost.example.com:27017
的剩余传出连接:
db.adminCommand( { "dropConnections" : 1, "hostAndPort" : [ "oldhost.example.com:27017" ] } )
该命令返回类似以下的输出:
{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1551375968, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1551375968, 1) }
您可以使用 命令确认mongod
或mongos
connPoolStats
连接池的状态。