Alterando usuário dono de várias tabelas após um import

Posted by Emerson on 13:38 with No comments
Olá pessoal.

Hoje fazendo um import de um dump em uma base de dados no Postgres me deparei com um situação um tanto inusitada de acesso ao banco de dados.

Quando criamos um novo banco de dados com o usuário master "postgres", mesmo setando para o banco de dados um novo usuário para acesso aos objetos deste mesmo banco nos objetos  não são atualizadas, ficando assim o usuário sem acesso de select, insert, delete ou update mesmo definido em nível de ROLE.

1 - Criando o Banco de Dados no Cluster:


postgres@Debian01:~$ /usr/local/pgsql/bin/psql
psql (9.0.4)
Type "help" for help.


postgres=# create database testeblog;
CREATE DATABASE
postgres=#

2 - Realizando o import da base



3 - Após o import do dump criei o usuário que será padrão para a aplicação, e seta-lo como usuário padrão do banco de dados testeblog:




















O problema já estar bem visível na imagem, como o dump foi importado com o usuário master "postgres" então automaticamente ele tornou-se dono dos objetos:

4 - Nesse caso construi um script para ser executado no servidor para que possa corrigir o dono das tabelas;














Observe que o através do próprio psql exportamos um script com as linhas  contendo os comandos para alterar os donos de cada tabela importada anteriormente, optei por não executar via pgadmin para que pudessemos ver a possibilidade de exportar uma saida sql para um arquivo.

SELECT 'ALTER TABLE'||' '||tablename ||' '||'OWNER TO userblog;' FROM pg_tables where schemaname = 'public'

5 - Após isso podemos ter acesso normalmente a operações do tipo DDL e DML a essa base com o usuário criado.
















É isso ai pessoal!
Espero que seja útil assim como foi para mim..

Emerson Martins
DBA


Categories: