PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Django:permissão negada ao tentar acessar banco de dados após restauração (migração)


Acontece que você deve conceder a propriedade explícita de todos os objetos no banco de dados ao proprietário após a restauração. O proprietário não é um superusuário. Não basta apenas definir o proprietário no momento da criação do banco de dados. A solução final para migração é assim:

no cliente:
pg_dump -f dump.sql -Ox database

no servidor:
su postgres    
dropdb database
createdb database -O user
psql database -f dump.sql

e, em seguida, para definir os privilégios:
psql database -c "GRANT ALL ON ALL TABLES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL SEQUENCES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to user;"

Observe que poderíamos ter executado o comando sql no console psql, mas este formulário é facilmente incorporável em scripts e outros.