PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Django:autorizzazione negata quando si tenta di accedere al database dopo il ripristino (migrazione)

Si scopre che è necessario concedere la proprietà esplicita di tutti gli oggetti nel database al proprietario dopo il ripristino. Il proprietario non è un superutente. Non è sufficiente impostare il proprietario solo al momento della creazione del database. La soluzione finale per la migrazione è questa:

sul cliente:

pg_dump -f dump.sql -Ox database

sul server:

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

e poi per impostare i privilegi:

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;"

Nota che avremmo potuto eseguire il comando sql nella console psql, ma questo modulo è facilmente integrabile in script e simili.