ruby pg_dump:[archiver(db)]查询失败:错误:拒绝对关系About的权限

6qftjkof  于 2023-08-04  发布在  Ruby
关注(0)|答案(3)|浏览(119)

我试图转储我的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

字符串

scyqe7ek

scyqe7ek1#

执行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>;

ymzxtsji

ymzxtsji2#

这可能是一个常见的错误,当使用一个ROLE(用户)无法打开对象来转储它们时。
如前所述,您可以授予要转储的特定模式,甚至使用具有SUPERUSER属性的ROLE
请注意,当您与一些云数据库提供商(如AWS/RDS)打交道时,您不会收到具有SUPERUSER属性的用户,因此您需要进行管理以确保用于转储的用户将拥有所需的所有访问权限。
https://www.postgresql.org/docs/current/static/sql-grant.html将展示如何将GRANT赋予数据库上的许多对象,但也要记住,在恢复时,您需要首先创建数据库。只有当您使用pg_dumpall时,这是不必要的,但您还需要转储ROLES

sc4hvdpw

sc4hvdpw3#

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

sudo -u postgres psql

字符串
更改用户角色

alter role <user-name> superuser;

相关问题