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

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

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

Установка

Основных способа установки два:

Через скачивание установщика с сайта.

https://www.postgresql.org/download/

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

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

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

Через пакетный менеджер вашей операционной системы (предпочтительно).

  • 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.

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

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

Небольшое отступление на тему аутентификации. В PostgreSQL существует множество разных способов подключения. Один из самых простых методов называется Peer Authentication: он основан на совпадении имени пользователя, который подключается к 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
  ...

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

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 установлен неверно либо не установлен вообще.

Обратите внимание на то, что этот вывод порождается командной строкой на ввод любой несуществующей команды. Возможно даже, что это всего лишь ошибка в имени.

К сожалению, количество возможных проблем, помноженных на разные операционные системы и их версии, настолько велико, что не представляется возможным дать исчерпывающее руководство по их разрешению. Более того, даже опытный разработчик не всегда способен сразу разобраться, глядя на вывод ошибки, и ему требуется время на изучение проблемы (эксперименты и гугление). По этой причине, вопросы по установке лучше задавать сразу в нашем сообществе https://slack-ru.hexlet.io в канале #databases или #os.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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