postgresql - 强制单个受损角色与 PostgresQL 断开连接?
问题描述
我正在寻找一种方法来立即从 PostgresQL 数据库中断开单个已知的不良演员角色。我想阻止他们尽快进行进一步的更改,并且不希望他们能够立即重新连接并继续。我不希望这破坏当前在数据库上工作的任何其他连接。
我在这里看到了一些信息,但不清楚如何干净地将其应用于这种情况:使用 PostgreSQL 强制客户端断开连接
解决方案
从 PostgresQL 11.2 开始,如果您的问题角色是“baduser”,您可以在 psql 中运行以下命令。
-- to prevent further connections from this user
ALTER ROLE baduser WITH NOLOGIN;
-- to terminate current connection from this user
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE usename = 'baduser';