pg_dump: [archiver (db)] query failed: ERROR: permission denied for relation abouts

pg_dump: [archiver (db)] query failed: ERROR: permission denied for relation abouts

我正在尝试转储我的 pg 数据库但是遇到了这些错误请建议

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 的用户没有对 public 架构的权限。

如果允许则添加权限:

GRANT USAGE ON SCHEMA public TO <user>;
GRANT SELECT ON ALL TABLES 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

更改用户权限:使用以下命令以 sudo 用户身份登录

sudo -u postgres psql

更改用户角色

alter role <user-name> superuser;