2013/5/23 Euler Taveira <[email protected]> > On 23-05-2013 10:44, Adenilton Batista da Silva wrote: > > Quando executo o dump da base para determinado usuário, não superuser > > mas com acesso completo a todos os objetos da base, o mesmo me retorna o > > erro: > > pg_dump: erro ao ler objeto grande 25543: ERRO: permissão negada para > > objeto grande 25543 > > > A partir da versão 9.0, os objetos grandes (aka LO -- large objects) > passaram a ter permissões [1] (antes qualquer um podia ler e escrever > LOs). Você deve coletar todos os LOs utilizados nesta base e executar o > comando GRANT para cada oid encontrado: > > GRANT SELECT ON LARGE OBJECT 12345 TO foo; > > Sei que vai perguntar como listas os LOs de determinadas tabelas. Já > prevendo a sua pergunta, é necessário saber os campos que tem tipo oid e > depois ir fazendo consultas na tabela do catálogo pg_largeobject_metadata. > > SELECT s.nspname AS nsp, c.relname AS rel, a.attname AS att > FROM pg_class c, pg_attribute a, pg_namespace s, pg_type t > WHERE a.attnum > 0 AND NOT a.attisdropped > AND a.attrelid = c.oid > AND a.atttypid = t.oid > AND c.relnamespace = s.oid > AND t.typname in ('oid', 'lo') > AND c.relkind in ('r', 'm') > AND s.nspname !~ '^pg_'; > > e depois consultar o catálogo com o retorno de cada registro: > > SELECT oid FROM pg_largeobject_metadata WHERE oid IN ( > SELECT _att_ FROM _nsp_._rel_ > ); > > Cara, nesse caso (para o dump de toda base), não é mais fácil simplesmente pegar os OIDs dos largeobjects?
Exemplo: SELECT 'GRANT SELECT ON LARGE OBJECT ' || oid || ' TO :user;' FROM pg_catalog.pg_largeobject_metadata; Dá pra embutir isso na função dele ou num script. Algum problema ou risco de fazer dessa forma que eu não estou pensando? PS: Não sei porque usam -Ft no pg_dump ao invés de -Fc... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
