killAllSessions
定义
killAllSessions
的
killAllSessions
命令杀死指定用户的全部会话。[1]
语法
该命令的语法如下
db.runCommand( { killAllSessions: [ { user: <user>, db: <dbname> }, ... ] } )
兼容性
此命令在以下环境中部署的部署中可用
MongoDB Atlas:云中MongoDB部署的全托管服务
重要
此命令不支持在M0、M2、M5和M10+集群中使用。有关更多信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅的自托管MongoDB版本
MongoDB Community:开源、免费使用和自托管的MongoDB版本
命令字段
该命令接受一个文档数组,其中每个文档指定了用户及其认证数据库。指定一个空数组以终止系统中所有用户的会话。[1]
查看现有会话
要查看现有会话,请参阅$listSessions
操作或$listLocalSessions
。
[1] | (1, 2) 操作killAllSessions 会忽略处于已准备状态的事务会话。有关详细信息,请参阅行为。 |
访问控制
如果部署强制执行身份验证/授权,您必须拥有killAnySession
权限才能运行killAllSessions
命令。
注意
用户即使没有killAnySession
权限动作,也可以终止自己的会话。
行为
进行中的操作
终止会话将终止会话中的任何进行中的操作,并关闭与这些操作相关联的任何打开的光标。
已终止会话的可用性
已终止的会话可能仍然被列为当前会话,并且未来的操作可能会使用已终止的会话。要查看现有会话,请参阅 $listSessions
操作或 $listLocalSessions
.
处于准备状态的事务会话
killAllSessions
操作会忽略处于准备状态的事务会话。处于准备状态的事务是指涉及跨多个分片且其提交协调器已完成 "sendingPrepare" action
.
示例
终止所有会话
以下操作将终止系统中所有用户的会话
db.runCommand( { killAllSessions: [ ] } )
终止特定用户的所有会话
以下操作将终止用户 appReader
在 db1
和用户 reportWriter
在 db2
数据库中的所有会话
db.runCommand( { killAllSessions: [ { user: "appReader", db: "db1" }, { user: "reportWriter", db: "db2" } ] } )