Разрешение на отказ в Postgresql отклонено
Я получаю эту ошибку при попытке сбрасывать базу данных, я ввел
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
Какая проблема? Я только что установил новый postgresql.
Ответы
Ответ 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'
Убедитесь, что у вас есть кавычки (одиночные или двойные кавычки, похоже, работают) вокруг имени файла, который следует за значком больше ( " > " ). В приведенных выше примерах нет котировок вокруг имени файла. Как только я попробовал это, я больше не получал ошибки с разрешением отказа.