Postgres:只有超级用户和所有者才能进行备份/转储吗?

因此,我已经创建了一个专门用于备份的用户。当我执行转储命令时,发生以下错误:

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for table {{tableName}}
pg_dump: [archiver (db)] query was: LOCK TABLE public.{{tableName}} IN accESS SHARE MODE

当前,所有者是各个表的postgres用户。

我希望使用仅具有SELECT访问权限的独占备份用户。以下是分配给用户的角色的特权

CREATE ROLE {{roleName}};
\c {{databaseName}};
GRANT USAGE ON SCHEMA public TO {{roleName}};
GRANT SELECT ON ALL TABLES IN SCHEMA public TO {{roleName}};
GRANT SELECT ON ALL SEQUENCES IN SCHEMA mySchema TO {{roleName}};
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO {{roleName}};
wangtao_451674711 回答:Postgres:只有超级用户和所有者才能进行备份/转储吗?

我只在文档https://www.postgresql.org/docs/12/backup-dump.html中找到了

但是请记住pg_dump不能在特殊权限下运行。 特别是,它必须对您想要的所有表都具有读取权限 备份,所以为了备份整个数据库,您几乎总是 必须以数据库超级用户身份运行它。 (如果您没有足够的 备份整个数据库的权限,您仍然可以备份 使用选项可以访问的数据库部分 例如-n模式或-t表。)

在postgresql邮件列表中还有一条很旧的消息: https://www.postgresql.org/message-id/18014.1075821674%40sss.pgh.pa.us

pg_dump通常应由数据库超级用户运行。任何东西 少会造成无法倾倒不 属于它。

您可以尝试像创建用户那样创建具有较少特权的用户:如果pg_dump pg_restore成功,那么应该没问题。

本文链接:https://www.f2er.com/2487594.html

大家都在问