Do not speak Portuguese? Translate this site with Google or Bing Translator
Erro ao realizar backup de base de dados em postgresql

Posted on: May 24, 2022 09:40 AM

Posted by: Renato

Views: 295

Erro ao tentar realizar backup de base de dados em postgresql

erro ao ler objeto grande 118287: ERROR: permission denied for large object 118287

Pesquisei sobre o erro e encontrei as seguintes informações

Desde a versão 9.0, cada large object no PostgreSQL possui seu OID, assim como tabelas, índices etc., não devendo ser tratado como simples registro da tabela pg_largeobject e portanto não sendo automaticamente legível pelo usuário dono desta tabela. Você pode listar os large objects e seus respectivos donos via psql com o comando \lo_list:

nunks=# \lo_list
        Large objects
  ID   | Owner | Description 
-------+-------+-------------
 16820 | nunks | Smiley :D
(1 row)

Para conceder a um usuário os direitos de leitura do large object especificado na pergunta, utilize:

GRANT SELECT ON LARGE OBJECT 118287 TO nome_do_usuario;

Como seu caso implica na leitura de todo o banco, sugiro efetuar o backup com um usuário que tenha permissão para a leitura de todos os objetos. Um SUPERUSER sendo a solução mais simples de se manter, caso você só tenha problemas quando da execução de backups.


Outra alternativa é modificar o comportamento do DATABASE em questão utilizando a opção lo_compat_privileges. Assim todos os large objects do banco serão legíveis e alteráveis por todos os usuários. Entretanto, isso significa reduzir a segurança de seus dados, algo que deve ser pesado no momento da decisão por tal alternativa. Para modificar o comportamento do banco, utilize um ALTER DATABASE com um superusuário:

ALTER DATABASE nome_do_banco SET lo_compat_privileges TO true;

A solução mais indicada para casos de uso com grande variedade de usuários criadores de large objects, conforme esta resposta no DBA SE, talvez seja definir um ROLE em que todos eles estejam incluídos e, quando da criação de um large object, definir explicitamente o ROLE utilizado pela transação para que ele seja o dono efetivo dos objetos que cria. Dessa forma, todos os usuários pertencentes a esse ROLE poderão manipular tais large objects. Para definir qual ROLE será utilizado, logo antes de criar o large object utilize o comando:

SET ROLE nome_do_role;

 

Fonte:

https://pt.stackoverflow.com/questions/312962/erro-ao-tentar-realizar-backup-de-base-de-dados-em-postgresql/313196#313196


1

Share
About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (12) Variados (109) PHP (111) Laravel (119) Black Hat (3) front-end (26) linux (95) postgresql (35) Docker (17) rest (4) soap (1) webservice (6) October (1) CMS (2) node (7) backend (11) ubuntu (48) devops (23) nodejs (5) npm (2) nvm (1) git (5) firefox (1) react (6) reactnative (5) collections (1) javascript (5) reactjs (7) yarn (0) adb (1) solid (0) blade (2) models (1) controllers (0) log (0) html (2) hardware (2) aws (14) Transcribe (2) transcription (1) google (3) ibm (1) nuance (1) PHP Swoole (4) mysql (23) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (2) imagick (2) ec2 (1) sw (1) websocket (1) markdown (1) ckeditor (1) tecnologia (13) faceapp (1) eloquent (11) query (2) sql (35) ddd (3) nginx (6) apache (4) certbot (1) lets-encrypt (2) debian (10) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (3) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (1) binaural (1) mysqli (3) database (33) windows (4) vala (1) json (2) oracle (1) mariadb (2) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (13) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (3) bash (2) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (0) biologia (1) programming (20) performance (2) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (1) zsh (1) terminal (1) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (27) api (1) data (1) matematica (1) seguranca (2) 100DaysOfCode (6) hotfix (1) documentation (1) laravel (2) RabbitMQ (1) Elasticsearch (1) redis (2) Raspberry (3) Padrao de design (4) JQuery (1) angularjs (3) Dicas (15) kubenetes (1) vscode (1) backup (1) angular (2) servers (2) pipelines (1) AppSec (1) DevSecOps (2) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (1) jwt (2) security (1) translate (1) kube (1) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (2) traefik (1) networking (1) host (1) POO (1) microservices (1) bug (1) cqrs (1) arquitetura (1) Architecture (1) sail (1) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (1) autorizacao (1) authentication (1) authorization (1) NoCookies (1) wsl (1) memcached (1) macos (2) unix (1) kali-linux (1) linux-tools (1) apple (1) noticias (2)

New Articles



Get Latest Updates by Email