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

Jai*_*put 12 ruby postgresql ruby-on-rails-3

我正在尝试转储我的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
Run Code Online (Sandbox Code Playgroud)

d1l*_*ger 16

您正在执行的用户pg_dump没有公共架构的权限.

如果允许,添加权限:

GRANT USAGE ON SCHEMA public TO <user>;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;
Run Code Online (Sandbox Code Playgroud)


Ram*_*amy 15

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

sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)

更改用户角色

alter role <user-name> superuser;
Run Code Online (Sandbox Code Playgroud)


Vin*_*nix 11

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

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

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

https://www.postgresql.org/docs/current/static/sql-grant.html将显示如何为GRANT数据库中的许多对象提供,但也要记住,在还原时,您需要先创建数据库.只有你使用pg_dumpall它是没有必要的,但你也需要转储ROLES.