文档菜单
文档首页
/
MongoDB 手册
/ / /

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" ] }

例如,以下操作在 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)
}

您可以使用 mongodmongosconnPoolStats 命令来确认连接池的状态。

返回

dropDatabase