PostgreSQL:pg_dump 因权限被拒绝而失败

mdw*_*mdw 6 postgresql

今天我尝试转储我的 PgSQL 数据库,这是我时常做的事情,没有任何问题,但失败了:

borelupo@l5nets02:~$ pg_dump -f spam-20150123.sql -F p -O -C -h x.x.x.x -U borelupo spam
Password:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR:  permission denied for relation badports
pg_dump: The command was: LOCK TABLE public.badports IN ACCESS SHARE MODE
Run Code Online (Sandbox Code Playgroud)

现在,用户borelupo是该表的所有者,他如何才能完全拒绝权限呢?

spam=> \d
         List of relations
Schema |     Name      | Type  |  Owner
-------+---------------+-------+----------
public | badports      | table | borelupo
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?PostgreSQL 是 9.1.14。

编辑:当我以管理员用户(postgres)连接时,转储工作正常。但我当然希望不需要登录数据库服务器、切换用户等。

mdw*_*mdw 5

我想我已经发现了问题:成为该表的所有者并不意味着拥有所有特权。所以我真的缺乏给定表的权限。我的错。

  • 您能详细说明一下您是如何发现缺乏权限的以及事后修复的吗? (3认同)

小智 1

pg_dump 是一个管理函数。因此,需要给用户拥有适当的权限才允许使用该功能。

尝试授予选择并更新对其的访问权限。或者,您可以以超级用户身份登录来执行该操作。

  • “*pg_dump 是一个管理功能*” - 不是它不是。任何对被欺骗的表具有选择权限的用户都可以运行“pg_dump”。普通用户应该能够在自己的模式上运行“pg_dump”。 (6认同)