在PostgreSQL中授予函数pg_start_backup执行不起作用



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(文本、布尔值、布尔值(可以由超级用户或被授予函数执行权限的用户执行。

实际上,这是行不通的,因为该函数是"安全调用程序"。它只有在"安全定义器"时才有效。页面创建PostgreSQL 9角色与登录(用户(只是为了执行功能说"函数必须是使用安全定义器创建的,否则这个用户仍然无法执行它们",这是完全正确的。

为了使用户能够真正执行函数,在"在函数pg_start_backup上执行"之上,我必须授予用户哪些最低权限?

有趣的是,用户必须被授予在他连接的数据库中执行此系统功能的权限。尽管这是每个数据库中相同的系统功能,并且仅在集群级别执行操作,但执行它的权限单独保存在每个数据库中。

因此,如果您希望让特殊用户专门执行此函数(当然还有 pg_stop_backup(布尔值(,最好在 postgres 数据库中授予它并允许用户仅连接到此数据库。

最新更新