dropConnections
定义
dropConnections
该
dropConnections
命令删除mongod
/mongos
实例到指定主机的出站连接。必须针对admin
数据库运行dropConnections
命令。
兼容性
此命令在以下环境中部署的部署中可用
MongoDB 企业版:MongoDB 的基于订阅的自托管版本
MongoDB 社区版:MongoDB 的源代码可用、免费使用和自托管版本
语法
该命令具有以下语法
db.adminCommand( { dropConnections: 1, hostAndPort : [ "host1:port1", "host2:port2", ... ], comment: <any> } )
命令字段
该命令需要以下字段
字段 | 类型 | 描述 |
---|---|---|
hostAndPort | 数组 | 数组中的每个元素代表远程机器的主机名和端口号。 |
comment | 任意类型 | 可选。用户提供的附加到此命令的注释。一旦设置,此注释将出现在以下位置的此命令记录旁边
注释可以是任何有效的 BSON 类型(字符串、整数、对象、数组等)。 |
访问控制
如果部署强制执行 身份验证/授权,则 dropConnections
命令需要在 集群 资源上具有 dropConnections
操作。
在 admin
数据库中创建一个 用户自定义角色,其中 privilege
数组包含以下文档
{ "resource" : { "cluster" : true } }, "actions" : [ "dropConnections" ] }
使用
db.createUser()
在admin
数据库中创建具有自定义角色的用户。或
使用
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
命令来确认连接池的状态。