Разрешение на дамп Postgresql отклонено - PullRequest
31 голосов
/ 12 января 2012

Я получаю эту ошибку при попытке выгрузить базу данных, я ввел

linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied

В чем проблема?я только что установил свежий postgresql.

Ответы [ 6 ]

57 голосов
/ 12 января 2012

Запись в каталог, где у пользователя postgres есть права на запись. Например /tmp.

$ pg_dump -h localhost mydb >/tmp/tempfile

В вашей попытке пользователь postgres пытается создать файл в некотором случайном каталоге, принадлежащем другому пользователю.

6 голосов
/ 12 января 2012

sudo su postgres не меняет текущий каталог, поэтому вы все еще находитесь в домашнем каталоге linuxuser, и postgres не имеет разрешения на запись в него. Перейдите в другой каталог

3 голосов
/ 07 октября 2017

Резервное копирование и восстановление может выполнить любой непривилегированный пользователь, который знает пароль суперпользователя postgres, изменив разрешения для рабочего каталога:

% mkdir backup

% chmod 0777 backup

% su postgres

[enter password]

$ cd backup

$ pg_dump mydb >tempfile

$ exit

"tempfile" будет принадлежать postgres и той же группе, что и пользователь

2 голосов
/ 11 августа 2014

postgres Пользователь

Как и в других правильных ответах, папка, в которой вы пытаетесь сохранить резервную копию, не имеет разрешений, назначенных пользователю postgres (учетная запись пользователя операционной системы). Пользователь postgres запускает утилиту резервного копирования. Эта учетная запись была создана в процессе установки Postgres. Возможно, вы использовали другое имя, но по умолчанию используется postgres.

Папка с разрешениями

Решение состоит в том, чтобы найти или создать папку , где у пользователя postgres есть права на чтение и запись.

Mac OS X

В Mac OS X (Mountain Lion) я могу создать такую ​​папку в Finder.

  1. В Finder создайте новую папку. Выберите его.
    В этом примере я создал папку с именем postgres_backups.
  2. Выберите File> Get Info.
  3. Откройте раскрывающий треугольник для секции Sharing & Permissions.
  4. Нажмите кнопку «Плюс», чтобы добавить другой элемент в список пользователей.
    Список пользователей отобразится в диалоговом окне «лист».
  5. Выберите пользователя postgres из списка.
  6. В столбце Privilege для новой строки postgres измените всплывающее меню на Read & Write.
  7. Закройте окно Get Info. Готово.

Теперь вы можете направлять файлы резервных копий Postgres в эту папку.

screen shot of a

Кстати, я использую приложение pgAdmin для резервного копирования и восстановления. Ctrl + клик по нужной базе данных и выберите Backups…. Вероятно, приложение pgAdmin было связано с вашей установкой Postgres.

1 голос
/ 13 июля 2015

Первое, что вам нужно сделать, это не переключаться на пользовательские postgres. Используйте эту команду для резервного копирования:

pg_dump -U username -h localhost dbname > /db.sql
0 голосов
/ 14 февраля 2018

Я боролся с этой проблемой «Отказано в доступе», пытаясь долгое время создавать резервные копии моей базы данных PSQL на компьютере с Ubuntu, и пробовал права доступа пользователя, статус суперпользователя, свойства папки - много всего.Наконец-то сработало что-то смехотворно простое.В команде:

pg_dump -U username -O dbname > 'filename.sql'

Убедитесь, что у вас есть кавычки (одинарные или двойные кавычки работают) вокруг имени файла, которое следует за знаком больше (">").В приведенных выше примерах нет кавычек вокруг имени файла.После этого я больше не получал сообщения об отказе в разрешении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...