我试图转储我的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
字符串
scyqe7ek1#
执行pg_dump的用户没有公共架构的权限。添加权限(如果允许):
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>;
型
ymzxtsji2#
这可能是一个常见的错误,当使用一个ROLE(用户)无法打开对象来转储它们时。如前所述,您可以授予要转储的特定模式,甚至使用具有SUPERUSER属性的ROLE。请注意,当您与一些云数据库提供商(如AWS/RDS)打交道时,您不会收到具有SUPERUSER属性的用户,因此您需要进行管理以确保用于转储的用户将拥有所需的所有访问权限。https://www.postgresql.org/docs/current/static/sql-grant.html将展示如何将GRANT赋予数据库上的许多对象,但也要记住,在恢复时,您需要首先创建数据库。只有当您使用pg_dumpall时,这是不必要的,但您还需要转储ROLES。
ROLE
SUPERUSER
GRANT
pg_dumpall
ROLES
sc4hvdpw3#
更改用户的权限:以sudo用户身份登录,使用以下命令
sudo -u postgres psql
字符串更改用户角色
alter role <user-name> superuser;
3条答案
按热度按时间scyqe7ek1#
执行
pg_dump
的用户没有公共架构的权限。添加权限(如果允许):
字符串
此外,如果有任何序列,您也应该访问它们:
型
ymzxtsji2#
这可能是一个常见的错误,当使用一个
ROLE
(用户)无法打开对象来转储它们时。如前所述,您可以授予要转储的特定模式,甚至使用具有
SUPERUSER
属性的ROLE
。请注意,当您与一些云数据库提供商(如AWS/RDS)打交道时,您不会收到具有
SUPERUSER
属性的用户,因此您需要进行管理以确保用于转储的用户将拥有所需的所有访问权限。https://www.postgresql.org/docs/current/static/sql-grant.html将展示如何将
GRANT
赋予数据库上的许多对象,但也要记住,在恢复时,您需要首先创建数据库。只有当您使用pg_dumpall
时,这是不必要的,但您还需要转储ROLES
。sc4hvdpw3#
更改用户的权限:以sudo用户身份登录,使用以下命令
字符串
更改用户角色
型