Подтвердить что ты не робот

Разрешение на отказ в Postgresql отклонено

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

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

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

4b9b3361

Ответ 1

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

$ pg_dump -h localhost mydb >/tmp/tempfile

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

Ответ 2

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

Ответ 3

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

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

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

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

Mac OS X

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

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

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

screen shot of a "Get Info" window in the Finder

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

Ответ 4

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

% mkdir backup

% chmod 0777 backup

% su postgres

[enter password]

$ cd backup

$ pg_dump mydb >tempfile

$ exit

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

Ответ 5

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

pg_dump -U username -h localhost dbname > /db.sql

Ответ 6

Я боролся с этой проблемой "Разрешения на отказ" при попытке резервного копирования моей базы данных PSQL на машине Ubuntu в течение длительного времени и проверял права доступа пользователей, статус суперпользователя, свойства папок - множество вещей. Наконец, что-то работало, что было смешно просто. В команде:

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

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