管理备份权限
来自 PostgreSQL 维基
跳转到导航跳转到搜索
作者 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);
享受!