Восстановление БД с помощью psql

ListOFF

Новичок
Доброго времени суток.

Есть дамп БД, сохраненный на сервере сделанный с помощью pg_dump. Нужно развернуть БД из дампа с помощью psql. Сам я чайник, никогда ничем подобным не занимался. С помощью putty подключился к серваку по SSH, нашел папку, где лежит дамп, что дальше? Как должна правильно выглядеть команда для восстановления БД? И нужно ли сначала предварительно создать пустую БД и в неё восстановить дамп или это делается автоматически? Как указать имя юзера, имя БД, имя дампа?
 

ListOFF

Новичок
WMix, да, я читал это. Но не совсем понял. createdb -T template0 имя_БД - это команда выполняется какой программой (глупый вопрос, но всё же)? Почему именно template0 (или это просто для примера?)? БД с именем "имя_БД" будет создано для какого юзера (при входе в интерфейс pgadmin нужно ввести логин-пароль, у юзеров с разными логинами доступ к разным базам, это как-то должно быть отражено в команде?)?
 

fixxxer

К.О.
Партнер клуба
какой программой
шеллом

Почему именно template0
ну можно template1, если больше нравится. для восстановления из полного дампа лучше 0 чтобы ничего не конфликтовало
http://www.postgresql.org/docs/9.2/static/manage-ag-templatedbs.html

для какого юзера
которого укажешь овнером
http://www.postgresql.org/docs/9.2/static/app-createdb.html

также см. http://www.postgresql.org/docs/9.2/static/sql-grant.html
 
  • Like
Реакции: WMix

Вурдалак

Продвинутый новичок
psql подойдёт, только если там дамп обычный, бинарный вроде только через pg_restore.
 

WMix

герр M:)ller
Партнер клуба
ListOFF
порою нужно просто попробывать, не задаваясь не нужными вопросами,.. а сделав задуматься!
на самом деле, ты чтото теряешь?
 

ListOFF

Новичок
Спасибо за ответы. Файл оказался бинарным, о чем я узнал случайно. Кстати, не нашел, как определить его тип (бинарный/текстовый) в файловом менеджере.

На данный момент есть проблемы.

1.Я создал БД командой
createdb -U postgres -T template0 example
При этом без -U postgres появлялось предупреждение, что роль "root" не существует. В интрефейсе pgadmin пользователь для этой БД указан как "postgres". Но к этому пользователю я не знаю пароль, поэтому не могу никак редактировать БД. Как теперь поступить? В связи с этим также отмечу, что я не понял разницы между username и owner. Овнера я вообще не указывал, а в -U ничего кроме postgres указать не получилось, появлялось (при указании user_one вместо postgres):

"не удалось подключиться к базе postgres: ВАЖНО: пользователь "user_one" не прошёл проверку подлинности (Peer)"

Как сейчас правильно сменить пользователя на "user_one"? ("user_one" - это логин при входе в интерфейс пгадмин)

2.Пытался, но не получилось удалить БД. Допустим мне надо удалить всю ту же БД example. Происходило во что:

root@we:/share/Temp# psql drop database example
psql: предупреждение: лишний аргумент "example" проигнорирован
psql: ВАЖНО: пользователь "database" не прошёл проверку подлинности (Peer)
Или вот:

root@we:/share/Temp# psql -U "postgres" dropdb example
psql: предупреждение: лишний аргумент "example" проигнорирован
psql: ВАЖНО: база данных "dropdb" не существует
Что я не так сделал?
 
Сверху