管理备份权限

来自 PostgreSQL 维基
跳转到导航跳转到搜索

代码片段

管理备份权限

适用于 PostgreSQL

任何

使用语言

SQL

依赖于


作者 3manuek

假设您想要一个只有在备份运行时才有权限的“备份”用户。 因此,这里有一个可以管理每个模式的权限(授予和撤销)的函数。

CREATE OR REPLACE FUNCTION manage_backup_privileges(p_user text, p_schema text, action boolean)
RETURNS void AS
$BODY$
DECLARE
  objeto text;
BEGIN
  FOR objeto IN
     SELECT tablename FROM pg_tables WHERE schemaname = p_schema
     UNION
     SELECT relname FROM pg_statio_all_sequences WHERE schemaname =
p_schema
  LOOP
     IF action = true THEN
         RAISE NOTICE 'Asignando todos los privilegios a % sobre %.%', p_user,p_schema, objeto;
         EXECUTE 'GRANT ALL PRIVILEGES ON ' || p_schema || '.' || objeto || ' TO ' || p_user ;
     ELSE
         RAISE NOTICE 'Quitando todos los privilegios a % sobre %.%', p_user,p_schema, objeto;
         EXECUTE 'REVOKE ALL PRIVILEGES ON ' || p_schema || '.' || objeto || ' FROM ' || p_user ;
     END IF;
  END LOOP;

END;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;

运行它,非常简单。 如果您想激活权限,请使用以下形式

select manage_backup_privileges('usuario','esquema', true); --look the third parametter, is true

如果要撤销权限

select manage_backup_privileges('usuario','esquema', false);

享受!