pg_terminate_backend - как включить его выполнение не суперпользователем? - PullRequest
0 голосов
/ 16 января 2019

Я пишу функцию, которая убивает все текущие операции, выполняемые на сервере, однако, pg_terminate_backend позволяет только суперпользователям выполнять ее. Я искал вокруг, но не смог найти конкретного решения или руководства по этому вопросу.

Возможно ли на самом деле предоставить определенному пользователю разрешение на его выполнение, не делая этого пользователя суперпользователем?

Кроме того, мне удалось найти некоторую информацию о людях, использующих определители безопасности. Я никогда не использовал их и действительно не нашел варианта использования этого с pg_terminate.

Кто-нибудь когда-либо имел с этим опыт или знает, возможно ли это?

1 Ответ

0 голосов
/ 16 января 2019

В последних версиях PostgreSQL вы могли предоставить пользователю роль pg_signal_backend.

В допотопной версии, такой как 8.0, вам нужно написать функцию SECURITY DEFINER, принадлежащую суперпользователю, REVOKE EXECUTE для функции из PUBLIC и предоставить ее пользователю, которому необходимо завершить бэкенды.

...