Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Установка Основы реляционных баз данных

Вся практика в этом курсе выполняется в нашей среде, но вам все равно необходимо научиться работать с базой локально. Эффективное обучение невозможно без повторения примеров из уроков в своей среде. Поэтому в начале курса необходимо установить PostgreSQL локально. В этом уроке мы разберем, как это сделать.

Установка PostgreSQL

Существует два основных способа установки. Рассмотрим каждый из них подробнее.

Загрузка с сайта PostgreSQL

Перейдите в раздел «Загрузки» сайта PostgreSQL по этой ссылке.

В разделе Binary packages выберите ссылку, на которой написано имя вашей операционной системы. Перейдите по ней и скачайте установщик. Далее запустите его и выполните указанные инструкции.

Если вы пользуетесь Windows, убедитесь, что запуск инсталлятора происходит от администратора. К тому же, вам нужно настроить Windows определенным образом — а именно включить подсистему Ubuntu или поставить vagrant. Подробнее здесь https://guides.hexlet.io/ru/

Если вы уже включили WSL в Windows, установить PostgreSQL поможет инструкция PostgreSQL In Windows Subsystem for Linux (WSL).

Загрузка через пакетный менеджер

Лучше установить PostgreSQL не с сайта, а через пакетный менеджер вашей операционной системы:

  • MacOS: brew install postgresql
  • Ubuntu: apt install postgresql
  • Windows: choco install postgresql

Сразу после установки PostgreSQL автоматически запускается от имени вновь созданного пользователя postgres в большинстве операционных систем. Этот пользователь понадобится нам дальше. Также будет создана база данных с именем postgres.

Теперь убедимся в том, что установка прошла правильно. Посмотрите из командной строки, запущен ли PostgreSQL:

ps aux | grep postgres

# Вывод может быть другим
# Главное, чтобы в нем встречалась строчка с текстом bin/postgres
postgres  3437  0.0  2.3 295008 24160 ?        S    12:01   0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf

В вашем случае вывод может отличаться, но главное — увидеть ту строчку, в которой отображается запуск самой базы данных. Если база данных запущена, то дальше нужно попробовать к ней подключиться. PostgreSQL поставляется со специальной программой psql, которая представляет собой REPL. Через него можно управлять PostgreSQL и взаимодействовать с базами данных внутри нее.

Подключение PostgreSQL

Подключение всегда выполняется от имени конкретного пользователя и к конкретной базе данных. Если не указано другого, то psql попробует подключиться от имени пользователя, запускающего psql, к базе данных с тем же именем.

В самой базе данных при этом используется понятие «роль», а не «пользователь»:

psql

psql: FATAL:  role "vagrant" does not exist

Если PostgreSQL еще не настраивался, то такой запуск выдаст ошибку, явно указывающую на отсутствие соответствующей роли. Единственная роль, которая есть в PostgreSQL сразу после установки — postgres.

Если вы работаете на MacOS, то подключение уже настроено для вашего текущего пользователя (при установке будет создана одноименная роль). Но подключение с помощью команды psql также не сработает:

# В MacOS вывод будет другим, так как не существует базы данных с именем,
# которое совпадает с именем пользователя
psql
psql: FATAL:  database "vagrant" does not exist

Чтобы глубже понять тему подключения, поговорим об аутентификации. В PostgreSQL существует множество разных способов подключения. Один из самых простых методов называется Peer Authentication.

Он основан на совпадении двух имен:

  • Имени пользователя, который подключается к PostgreSQL
  • Имени роли внутри PostgreSQL

У нас есть пользователь postgres снаружи и роль postgres внутри, поэтому мы воспользуемся именно этим методом:

# Запуск программы от имени другого пользователя (postgres)
sudo -u postgres psql

postgres=#

При таком запуске программы произойдет подключение к базе данных postgres с ролью postgres.

Если у вас MacOS, достаточно при запуске команды psql указать имя базы данных, к которой выполняются подключение:

# Запуск программы от имени текущего пользователя к базе данных postgres
psql postgres

postgres=#

Если ваш вывод совпадает с примером, то поздравляем — подключение к PostgreSQL прошло успешно! Но войти внутрь — это еще не все. Еще нужно суметь выйти.

Управляющие команды

Внутри repl доступны разные управляющие команды. Все они построены по одному принципу — перед командой набирается обратный слеш \, например:

  • Чтобы выйти, надо набрать \q
  • Чтобы посмотреть полный список команд, надо набрать \?

Команда \? загружает пейджер, по которому можно перемещаться, используя стандартные комбинации текстового редактора Vim:

postgres=# \?
Informational
  (options: S = show system objects, + = additional detail)
  \d[S+]                 list tables, views, and sequences
  \d[S+]  NAME           describe table, view, sequence, or index
  \da[S]  [PATTERN]      list aggregates
  \dA[+]  [PATTERN]      list access methods
  \db[+]  [PATTERN]      list tablespaces
  \dc[S+] [PATTERN]      list conversions
  \dC[+]  [PATTERN]      list casts
  \dd[S]  [PATTERN]      show object descriptions not displayed elsewhere
  \dD[S+] [PATTERN]      list domains
  \ddp    [PATTERN]      list default privileges
  \dE[S+] [PATTERN]      list foreign tables
  \det[+] [PATTERN]      list foreign tables
  \des[+] [PATTERN]      list foreign servers
  \deu[+] [PATTERN]      list user mappings
  \dew[+] [PATTERN]      list foreign-data wrappers
  ...

Возможные проблемы

В работе с PostgreSQL вы можете столкнуться с такой проблемой:

psql

psql: could not connect to database template1: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Этот вывод говорит, что подключение не удалось — нужно выяснять почему. В некоторых случаях такая ошибка возникает, если не запущен сервис postgresql. Тогда запустите его и выполните подключение повторно.

Еще вам может встретиться ошибка psql: command not found. Она указывает, что вы ввели не существующую команду. Это может пройти по трем причинам:

  • В названии команды допущена опечатка
  • PostgreSQL установлен неверно
  • PostgreSQL не установлен вообще

К сожалению, возможных проблем очень много, особенно с учетом разных операционных систем и их версий. Даже опытный разработчик не всегда может взглянуть на вывод ошибки и сразу выдать решение — ему требуется время на изучение проблемы, эксперименты и поиск ответов в Google.

По этой причине мы не даем исчерпывающее руководство по ошибкам. Если у вас возникнут сложности, вопросы по установке лучше задавать в нашем Slack-сообществе в каналах #databases или #os.

Процесс установки PostgreSQL в Ubuntu


Самостоятельная работа

  • Установите PostgreSQL и убедитесь, что СУБД запускается и работает. Для этого выполните подключение с помощью psql

Дополнительные материалы

  1. Настройка локали
  2. Управление пользователями

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
6 октября 10 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
6 октября 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
6 октября 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов для веб-приложений
6 октября 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
6 октября 16 месяцев
Иконка программы Инженер по тестированию
Профессия
Новый
Ручное тестирование веб-приложений
дата определяется 4 месяца

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»