pg_dump: [archiver (db)] query failed: ERROR: permission den



我正在尝试转储我的pg db,但得到这些错误,请建议

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for relation abouts
pg_dump: [archiver (db)] query was: LOCK TABLE public.abouts IN ACCESS SHARE MODE

执行pg_dump的用户没有对公共模式的权限。

如果允许,添加权限:

GRANT USAGE ON SCHEMA public TO <user>;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;

如果有任何序列,你也应该访问它们:

GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO <user>;

当使用无法打开对象以转储它们的ROLE(用户)时,这可能是一个常见错误。

就像前面说的,您可以授予您想要转储的特定模式,或者甚至使用具有SUPERUSER属性的ROLE

请注意,当您处理一些云数据库提供商时,如AWS/RDS,您将不会接收到具有SUPERUSER属性的用户,因此您需要管理以确保用于转储的用户将具有所需的所有访问权限。

https://www.postgresql.org/docs/current/static/sql-grant.html将展示如何将GRANT分配给数据库上的许多对象,但也要记住,在恢复时需要首先创建数据库。只有在使用pg_dumpall时才不需要这样做,但是您还需要转储ROLES

使用命令cmd

修改用户权限:login as sudo user
sudo -u postgres psql

修改用户角色

alter role <user-name> superuser;

相关内容

最新更新