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;
我正在尝试转储我的 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;