pg_dump:[archiver(db)]查询失败:错误:关系约束的权限被拒绝

时间:2016-09-05 11:03:27

标签: ruby postgresql ruby-on-rails-3

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

3 个答案:

答案 0 :(得分:12)

您执行pg_dump的用户没有对公共架构的权限。

如果允许,请添加权限:

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

答案 1 :(得分:10)

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

如前所述,您可以授予要转储的特定架构,甚至可以使用ROLE属性SUPERUSER

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

https://www.postgresql.org/docs/current/static/sql-grant.html将显示如何为数据库中的许多对象提供GRANT,但同时请记住,在恢复时,您需要先创建数据库。仅当您使用不必要的pg_dumpall时,您还需要转储ROLES

答案 2 :(得分:2)

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

sudo -u postgres psql

更改用户角色

alter role <user-name> superuser;