PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Django :autorisation refusée lors de la tentative d'accès à la base de données après la restauration (migration)

Il s'avère que vous devez accorder la propriété explicite de tous les objets de la base de données au propriétaire après la restauration. Le propriétaire n'est pas un superutilisateur. Il ne suffit pas de définir uniquement le propriétaire au moment de la création de la base de données. La solution finale pour la migration ressemble à ceci :

sur le client :

pg_dump -f dump.sql -Ox database

sur le serveur :

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

puis pour définir les privilèges :

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

Notez que nous aurions pu exécuter la commande sql dans la console psql mais ce formulaire est facilement intégrable dans des scripts et autres.