今天我试图转储我的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
现在,用户 borelupo 是该表的所有者,他如何才能权限被拒绝?
spam=> \d
List of relations
Schema | Name | Type | Owner
-------+---------------+-------+----------
public | badports | table | borelupo
是什么给出的? PostgreSQL是9.1.14。
编辑:当我以管理员用户(postgres)连接时,转储工作正常。但我肯定不需要登录数据库服务器,切换用户等。
答案 0 :(得分:3)
我想我发现了这个问题:作为所述表的所有者并不意味着拥有所有权限。所以我真的缺少给定表的权限。我的坏。
答案 1 :(得分:0)
pg_dump是一个管理功能。因此,需要为用户提供适当的权限才能使用该功能。
尝试GRANT选择并更新对它的访问权限。或者,您可以以超级用户身份登录以执行操作。
答案 2 :(得分:0)
我的问题是我的 postgres
角色不是 superuser
;这是通过 alter role postgres superuser;
修复的。