Урок 50 из 84 · Базы данных
Установка и настройка PostgreSQL
Содержание урока
PostgreSQL - это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).
PostrgreSQL - самая популярная СУБД среди Python разработчиков. Она бесплатная и обладает всем необходимым для стандартных задач функционалом. При этом разработчики Django, одного из основных фреймворков на Python, советуют использовать именно PostgreSQL.
Для того чтобы начать работать с PostgreSQL, нам необходимо установить все необходимое. Установка будет описана на примере такого Linux дистрибутива, как Ubuntu.
Установка PostgreSQL для UBUNTU
Пакет PostgreSQL можно загрузить из официального репозитория Ubuntu с помощью стандартного менеджера пакетов.
Сначала нужно обновить индекс пакетов системы, а затем можно загрузить пакеты PostgreSQL и contrib (он предоставляет дополнительные утилиты):
sudo apt update
sudo apt install postgresql postgresql-contrib
Установка программы завершена. Теперь можно ознакомиться с её функциями и особенностями.
Роли и базы данных PostgreSQL
По умолчанию PostgreSQL использует так называемые роли. Роли чем-то похожи на учётные записи пользователей или группы Unix-подобных систем.
Во время установки PostgreSQL использует модель аутентификации ident, которая связывает роли PostgreSQL со стандартными пользователями Unix/Linux. Открыть существующую роль можно при помощи связанной с ней учётной записи Linux.
Во время установки был создан Linux-пользователь postgres, который связан со стандартной ролью системы. Можно использовать этот аккаунт, чтобы подключиться к Postgres.
Существует несколько способов получить доступ к PostgreSQL при помощи этого аккаунта.
Пользователь postgres
Чтобы перейти в сессию пользователя postgres, введите:
sudo -i -u postgres
Чтобы получить доступ к командной строке, введите:
psql
Команда выполнит вход и откроет доступ к управлению СУБД.
Чтобы закрыть командную строку PostgreSQL, наберите:
\q
Это вернёт командную строку postgres в Linux.
Прямой доступ к командной строке PostgreSQL
Можно также получить доступ к командной строке PostgreSQL, не изменяя при этом сессии пользователя. Для этого нужен доступ к команде sudo.
Чтобы получить доступ к командной строке Postgres, запустите команду psql как пользователь postgres с правами sudo:
sudo -u postgres psql
Эта команда выполнит автоматический вход в PostgreSQL без промежуточной оболочки bash.
Чтобы закрыть эту командную строку, введите:
\q
Создание роли
На данный момент в СУБД есть только одна роль, postgres. Чтобы создать новую роль, используйте команду createrole. Чтобы создать роль в интерактивном режиме, добавьте флаг —interactive.
В сессии пользователя postgres создать нового пользователя можно с помощью команды:
createuser --interactive
В сессии другого пользователя можно использовать команду sudo, чтобы не переходить в сессию postgres:
sudo -u postgres createuser --interactive
Скрипт запросит данные о пользователе. Затем в зависимости от полученных данных он выполнит все необходимые команды, чтобы создать отвечающего требованиям пользователя.
Enter name of role to add: pythoneast
Shall the new role be a superuser? (y/n) y
У этого скрипта есть много различных флагов. Ознакомиться со списком доступных опций можно на странице мануала:
man createuser
Создание базы данных
По умолчанию роль Postgres запрашивает одноименную базу данных. Потому следует создать такую БД для нового пользователя.
Только что вы создали нового пользователя (в руководстве он условно называется pythoneast). Для создания БД используется команда createdb.
В сессии пользователя postgres создать новую БД можно с помощью команды:
createdb pythoneast
В сессии другого пользователя можно использовать команду sudo, чтобы не переходить в сессию postgres:
sudo -u postgres createdb pythoneast
Аутентификация новой роли PostgreSQL
Чтобы выполнить ident аутентификацию PostgreSQL, нужно иметь пользователя системы Linux, чье имя совпадает с именем роли и БД.
Если у вас нет такого пользователя, создайте его в Linux с помощью команды adduser (для этого необходимы права sudo).
sudo adduser pythoneast
После этого можно перейти в сессию нового пользователя и подключиться к БД:
sudo -i -u pythoneast
psql
Или же подключиться к БД напрямую:
sudo -u pythoneast psql
Если все предыдущие настройки были выполнены правильно, команда выполнит автоматическое подключение к БД.
Чтобы подключиться к другой БД, нужно указать её имя:
psql -d postgres
Чтобы получить информацию о текущем подключении, введите:
\conninfo
You are connected to database "postgres" as user "pythoneast" via socket in "/var/run/postgresql" at port "5432".
Это может быть полезно при подключении к нестандартным базам данных или пользователям.
Теперь система управления базами данных PostgreSQL установлена ваш компьютер.