Resulta que debe otorgar la propiedad explícita de todos los objetos en la base de datos al propietario después de la restauración. El propietario no es un superusuario. No es suficiente establecer solo el propietario en el momento de la creación de la base de datos. La solución final para la migración es así:
en el cliente:
pg_dump -f dump.sql -Ox database
en el servidor:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
y luego para configurar los privilegios:
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;"
Tenga en cuenta que podríamos haber ejecutado el comando sql en la consola psql, pero este formulario se puede integrar fácilmente en scripts y demás.