Buenas
En UNGS tenemos implementado un proceso de backup automático sobre la base Pilaga y Toba.
Los permisos se le asignaron al usuario “backup” mediante esta función:
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;
Para asignar los permisos, la ejecutamos de la siguiente manera:
select manage_backup_privileges(‘usuario’,‘schema’, true);
Funcionaba bien, hasta que migramos a la versión 1.13.
Luego de la migración, el proceso de backup dejó de realizarse, debido a errores de permisos, del usuario “backup” sobre la base Pilaga y Toba.
Volvimos a asignar los permisos sobre el schema public y auditoría, de la base pilagá, sin problema; pero cuando queremos asignarle permisos sobre el schema wichi, no obtenemos resultado.
La única forma de poder realizar el backup de la base, con el usuario “backup”, fue cambiarle el propietario al schema wichi (se lo cambiamos de “postgres” a al usuario “backup”).
No sabemos si este cambio nos traerá otros problemas futuros; por eso consultamos respecto a cuál sería la forma correcta de solucionar este inconveniente.
Lo mismo nos ha ocurrido con la base toba, pero sobre ella no hemos modificado propietarios esperando respuesta.
Saludos
Javier Salazar