我使用以下命令在源服务器上备份数据库:
pg_dump --no-acl -h "server" --port "1234" -U "admin" --no-owner dbname > dbname_dump.sql
然后在新服务器上,我创建了一个空数据库newdb并使用此命令来还原数据库
psql -U postgres -d newdb -f dbname_dump.sql
创建了新用户,并将所有权限分配给新数据库。当我与该新用户建立连接以恢复数据库时,并且想要在公共模式内的任何表上进行选择时,访问都会被拒绝。为什么?
答案 0 :(得分:0)
因此,我设法解决了这个问题,总之,问题是用于还原的admin用户是还原的所有内容的所有者,创建新的DB用户以用于应用程序使用并将所有内容转移给新用户都是噩梦。因此,以下是执行此正确方法的步骤:
现在应用程序正在运行,我可以运行数据库迁移脚本,因此一切都按预期运行。由于我是PGSQL的新手,所以我不知道只有所有者可以在表上进行删除或更改,但是当我阅读了手册之后,情况会变得更加清楚。