PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django:Berechtigung verweigert, wenn versucht wird, nach der Wiederherstellung auf die Datenbank zuzugreifen (Migration)

Es stellt sich heraus, dass Sie dem Eigentümer nach der Wiederherstellung explizit das Eigentum an allen Objekten in der Datenbank erteilen sollten. Der Eigentümer ist kein Superuser. Es reicht nicht aus, den Eigentümer nur zum Zeitpunkt der Datenbankerstellung festzulegen. Die endgültige Lösung für die Migration sieht folgendermaßen aus:

auf dem Client:

pg_dump -f dump.sql -Ox database

auf dem Server:

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

und dann um die Privilegien festzulegen:

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

Beachten Sie, dass wir den sql-Befehl in der psql-Konsole hätten ausführen können, aber dieses Formular lässt sich leicht in Skripte und dergleichen einbetten.