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