https://www.postgresql.org/docs/9.6/static/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE和https://www.postgresql.org/docs/9.6/static/continuous-archiving.html表示函数pg_start_backup(text,boolean,boolean)可以由超级用户或已被授予对该函数执行权限的用户执行。
在实践中,这不起作用,因为该功能是“安全调用者”。只有当它是“安全定义者”时它才会起作用。页面Create PostgreSQL 9 role with login (user) just to execute functions表示“必须使用SECURITY DEFINER创建函数,否则此用户仍然无法执行它们”,这是完全正确的。
为了让他真正执行该功能,我必须在“执行函数pg_start_backup”之上给予用户最小的权限是什么?
答案 0 :(得分:0)
有趣的是,用户必须被授予在他连接的数据库中执行此系统功能的权利。虽然这是一个在每个数据库中都相同且只在集群级别执行操作的系统函数,但执行它的权限将单独保存在每个数据库中。
所以,如果你想让一个特殊的用户专门执行这个函数(当然还有pg_stop_backup(boolean)),最好在postgres数据库中授予它,并允许用户只连接到这个数据库。