我正在编写一个函数,该函数将终止服务器上正在运行的所有当前操作,但是pg_terminate_backend
仅允许超级用户执行它。我进行了搜索,但未能找到具体的解决方案或相关的线索。
实际上有可能在不使该用户成为超级用户的情况下授予特定用户执行该权限的权限吗?
此外,我设法找到了一些有关使用安全定义器的人员的信息。我从未使用过这些,也没有在pg_terminate中找到它的用例。
任何人都对此有任何经验或知道这是否可能吗?
答案 0 :(得分:-1)
在最新的PostgreSQL版本中,您可以授予用户pg_signal_backend
角色。
在8.0等以前的版本中,您必须在SECURITY DEFINER
上的功能上写一个REVOKE EXECUTE
由超级用户拥有的功能PUBLIC
并将其授予需要的用户终止后端。