【问题标题】:Granting execute on function pg_start_backup in PostgreSQL does not work在 PostgreSQL 中授予对函数 pg_start_backup 的执行不起作用
【发布时间】:2017-07-28 22:03:33
【问题描述】:

https://www.postgresql.org/docs/9.6/static/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLEhttps://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 上执行”之外,我必须赋予用户哪些最低权限才能让他真正执行该函数?

【问题讨论】:

    标签: postgresql function backup grant


    【解决方案1】:

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

    所以,如果你想让一个特殊的用户专门执行这个函数(当然还有 pg_stop_backup(boolean)),最好在 postgres 数据库中授予它,并只允许用户连接到这个数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2012-03-15
      • 1970-01-01
      • 2012-09-23
      • 2023-03-07
      相关资源
      最近更新 更多