В данном рецепте мы рассмотрим методику работы с PostgreSQL в консоли и процесс подключения Django проекта к этой базе данных.
Кто такой superuser?
Это пользователь базы данных, созданный по-умолчанию, который обладает административными правами и, соответственно может быть использован для управления любым объектов внутри PostgreSQL.
После установки PostgreSQL на вашу операционную систему в БД будет зарегистрирован один суперпользователь postgres.
Используйте его, когда вам потребуется создать новую базу данных для своего проекта.
Проверка
Если вы установили PostgreSQL на свою операционную систему, то следующая команда, должна показать где на файловой системе располагается клиент БД:
$ which psql
/usr/bin/psql
Если вы правильно настроили sudo
, то вы сможете войти под суперюзером:
$ sudo -u postgres psql
psql (9.1.9)
Type "help" for help.
postgres=# \q
$
Как вы можете видеть, команда \q
позволила вам выйти из клиента.
Изменение пароля для суперюзера
Если вам вдруг потребуется изменить пароль суперпользователя, то зайдите в psql
и выполните следующее:
postgres=# \password postgres
Enter new password:
Enter it again:
Это необязательно делать на вашей локальной машине, но имеет очень большое значение для БД на боевом сервере, особенно, если вы разрешите внешние подключения к вашей базе данных.
Создание пользователя и базы
С помощью одной простой команды вы можете создать пользователя БД и назначить ему пароль:
$ createuser -U postgres yournewuser -P
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
Теперь можно создать базу данных и сразу привязать её к новому пользователю:
createdb -U yournewuser -E utf8 -O yournewuser yournewdb -T template0
Настройка конфигурации Django
Создав пользователя и базу данных, можно приступать к внесению их данных в настройки проекта:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'yournewdb',
'USER': 'yournewuser',
'PASSWORD': 'whateverpasswordyouenteredearlier',
'HOST': '', # Set to empty string for localhost.
'PORT': '', # Set to empty string for default.
}
}
Копирование и восстановление БД
Копируем БД:
pg_dump -Fc db_name > db_name.dump
Восстанавливаем БД:
pg_restore -1 db_name.dump -d db_name
Вот и всё.