2015-07-10 5 views
0

Я создаю сайт, и у меня возникают проблемы с восстановлением файла базы данных .dump. Я использую centos7, selinux, postgresql 9.4 и apache2.Восстановление файла .dump - «Permission Denied»

Это my pg_hba.conf file.

enter image description here

Это команда, которую я пытаюсь переместить дамп:

psql --single-transaction -U postgres db_name < dump_location 

Когда я делаю это, я получаю ошибку:

Permission denied.

Могу ли я что-то отсутствует или есть ли какие-то изменения в моих настройках? Дайте мне знать, если вам нужна дополнительная информация.

Спасибо!

+0

Вы должны опубликовать все сообщение об ошибке, как оно было выведено psql. –

+0

Какой пользователь Linux вы вошли в систему, как при выполнении этой команды? Можете ли вы получить приглашение psql, если вы просто дадите 'psql -U postgres db_name' сам? – harmic

+0

@Harmic Я могу получить приглашение psql, если я просто дам psql -U postgres имя db_name. Я вошел в систему как пользователь postgres, когда я вошел в систему – bluepanda

ответ

1

Пользователь операционной системы, в котором работает ваша оболочка, не имеет разрешения на чтение пути dump_location.

Обратите внимание, что это не обязательно пользователь операционной системы, с которым вы работаете psql as. В заявлении, как:

sudo -u postgres psql mydb < /some/path 

затем /some/path читается как текущий пользователь, перед тем sudo, а не как пользователь postgres, потому что это оболочка, который выполняет перенаправление ввода, а не psql.

Если в приведенном выше примере, вы хотите, чтобы прочитать файл как пользователь postgres вы бы:

sudo -u postgres psql -f /some/path mydb 

psql Это инструктирует, чтобы открыть и прочитать /some/path, когда это началось.

+0

Когда я проверяю разрешения с помощью ls -lZ file.dump, я получаю следующее: -rw-r-r--. Разве это не означает, что у всех других пользователей есть разрешения на чтение? – bluepanda

+0

Кажется, я ответил на свой вопрос: каталог, в котором хранится файл.dump, имеет следующее разрешение: drwx ------. Я попробую изменить его с помощью chmod. – bluepanda

0

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

"PSQL -d -U Postgres -f"

будет работать.