You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何断开PostgreSQL数据库中指定用户的连接且不影响其他在线用户

PostgreSQL断开特定用户连接操作方案

前置权限要求

  • 操作账号需要具备超级用户权限,或者被授予pg_signal_backend系统角色,普通用户无法终止其他用户的连接。

步骤1:查询目标用户的活跃连接

执行以下SQL查询指定用户的所有当前连接,核对信息避免误操作:

SELECT pid, usename, datname, client_addr, application_name, state
FROM pg_stat_activity
WHERE usename = '替换为要断开的目标用户名';

返回结果中的pid为连接对应的后端进程ID,你可以根据客户端地址、连接的数据库名等信息确认连接归属。

步骤2:断开目标用户的指定/全部连接

断开该用户所有连接

直接执行以下SQL批量终止目标用户的所有活跃连接:

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE usename = '替换为要断开的目标用户名'
-- 加下面这行可避免断开你当前执行命令的连接
AND pid <> pg_backend_pid();

断开该用户的单个指定连接

如果你只需要断开某一个特定连接,直接传入第一步查询到的对应pid即可:

SELECT pg_terminate_backend(替换为目标pid);

后续加固操作(针对离职人员场景)

为了避免离职人员后续再次连接数据库,建议直接关闭该账号的登录权限:

ALTER ROLE "目标用户名" WITH NOLOGIN;

如果确认该账号下没有需要保留的数据库对象,可以直接删除账号:

DROP ROLE IF EXISTS "目标用户名";

删除账号前务必确认该用户没有所属的表、视图、函数等对象,否则会导致删除失败或关联业务异常

注意事项

  • 若目标用户存在未提交的长事务,断开连接会触发事务自动回滚,会产生一定的IO开销,建议优先选择业务低峰期操作
  • 执行断开操作前务必核对目标用户名和pid信息,避免误中断正常业务或在职人员的连接

内容的提问来源于stack exchange,提问作者SkiingOtter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:45:03