復元後、データベース内のすべてのオブジェクトの明示的な所有権を所有者に付与する必要があることがわかりました。所有者はスーパーユーザーではありません。データベースの作成時に所有者を設定するだけでは不十分です。移行の最終的な解決策は次のようになります:
クライアントで:
pg_dump -f dump.sql -Ox database
サーバー上:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
次に、権限を設定します:
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;"
psqlコンソールでsqlコマンドを実行することもできますが、このフォームはスクリプトなどに簡単に埋め込むことができます。