2015-01-23 2 views
2

Сегодня я попытался сбросить мою PgSQL базу данных, я что-то время от времени без каких-либо проблем, но это не удалось:PostgreSQL: pg_dump не может с разрешения отказано

[email protected]:~$ 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.

Редактировать: Когда я подключаюсь как пользователь admin (postgres), свалки работают нормально. Но мне бы не хотелось, чтобы я не заходил на сервер db, переключал пользователей и т. Д.

+0

Я видел это, но это не помогает: они говорят о наличии привилегии SELECT, но здесь я даже владелец, поэтому у меня есть все привилегии (или, как я полагаю). – mdw

+0

просто измените '-U borelupo' на' -U postgres' –

+0

Использование -U postgres должно находиться на локальной машине с db и регистрироваться как «postgres». Во всяком случае, я думаю, что нашел, почему я получаю это: видимо, владелец не автоматически означает наличие всех привилегий! – mdw

ответ

0

pg_dump - это функция администратора. Таким образом, у пользователя должны быть права на использование функции.

Попробуйте GRANT выбрать и обновить доступ к нему. Или вы можете войти в качестве суперпользователя, чтобы выполнить действие.

+1

"* pg_dump - это функция администратора *" - это не так. Любой пользователь, имеющий привилегии выбора для обнуленных таблиц, может запускать 'pg_dump'. Обычный пользователь должен иметь возможность запускать 'pg_dump' на своей собственной схеме. –

2

Я думаю, что я нашел проблему: быть владельцем упомянутой таблицы не значит иметь все привилегии. Поэтому мне действительно не хватало привилегий для данной таблицы. Виноват.