Введение
В этой лабораторной работе мы установим и выполним начальную настройку PostgreSQL на виртуальной машине LabEx. Цель состоит в том, чтобы запустить PostgreSQL и убедиться в его работоспособности.
Мы начнем с обновления списков пакетов и установки сервера PostgreSQL вместе с пакетом postgresql-contrib. После установки мы проверим, что служба PostgreSQL запущена и принимает соединения, используя команду pg_isready. В завершение мы изучим базы данных по умолчанию и проверим статус сервера и базовую конфигурацию.
Установка PostgreSQL и проверка работоспособности
На этом этапе мы установим PostgreSQL на виртуальную машину LabEx и убедимся, что установка прошла успешно. PostgreSQL — это мощная реляционная система управления базами данных (СУБД) с открытым исходным кодом.
Сначала обновим списки пакетов для получения актуальной информации об обновлениях и новых версиях. Откройте терминал на рабочем столе виртуальной машины LabEx.
Выполните следующую команду:
sudo apt update
Эта команда обновляет список доступных пакетов и их версий, но не устанавливает и не обновляет сами пакеты. Вы увидите вывод, подтверждающий процесс обновления списков.
Теперь установим сервер PostgreSQL и пакет postgresql-contrib. Пакет postgresql-contrib предоставляет дополнительные утилиты и функциональные возможности, которые часто бывают полезны.
Выполните следующую команду:
sudo apt install postgresql postgresql-contrib -y

Флаг -y автоматически отвечает «yes» на все запросы в процессе установки. Эта команда загрузит и установит PostgreSQL и связанные с ним пакеты. Вы увидите подробный вывод процесса загрузки и установки.
После завершения установки необходимо убедиться, что PostgreSQL запущен. Обычно PostgreSQL запускается автоматически сразу после установки.
Чтобы проверить статус службы PostgreSQL, выполните следующую команду:
sudo service postgresql status
Мы также можем использовать команду pg_isready, чтобы проверить, запущен ли сервер PostgreSQL и готов ли он принимать соединения.
Выполните следующую команду:
pg_isready
Если PostgreSQL запущен, вы должны увидеть следующий вывод:
/var/run/postgresql:5432 - accepting connections
Если PostgreSQL не запущен, вы можете увидеть сообщение об ошибке, например:
/var/run/postgresql:5432 - no response
Если вы столкнулись с ошибкой "no response", попробуйте перезапустить службу PostgreSQL с помощью команды:
sudo service postgresql restart
Затем снова выполните pg_isready, чтобы проверить статус.

Если pg_isready показывает "accepting connections", это подтверждает, что PostgreSQL успешно установлен и работает.
Доступ к оболочке PostgreSQL (psql)
На этом этапе мы получим доступ к оболочке PostgreSQL — psql, которая является инструментом командной строки для взаимодействия с базами данных PostgreSQL. psql позволяет выполнять SQL-запросы, управлять базами данных и выполнять другие административные задачи.
По умолчанию PostgreSQL создает системного пользователя Unix с именем postgres, который соответствует суперпользователю PostgreSQL. Чтобы получить доступ к оболочке psql, вы можете либо переключиться на пользователя postgres, либо использовать sudo для выполнения команд от его имени.
Сначала переключимся на пользователя postgres. Выполните следующую команду:
sudo -i -u postgres
Эта команда переключает текущего пользователя на postgres. Вы заметите, что приглашение командной строки изменилось.
Теперь, когда вы вошли в систему как пользователь postgres, вы можете запустить оболочку psql. Выполните следующую команду:
psql
Эта команда откроет оболочку psql. Вы должны увидеть приглашение вида:
postgres=#
Это означает, что вы подключены к серверу PostgreSQL и можете выполнять SQL-команды.
Чтобы выйти из оболочки psql, введите \q и нажмите Enter:
postgres=## \q
Вы вернетесь в командную строку пользователя postgres.
Чтобы выйти из оболочки пользователя postgres и вернуться к исходному пользователю (labex), введите exit и нажмите Enter:
exit
Альтернативно, вы можете получить доступ к оболочке psql напрямую от имени пользователя labex, используя sudo. Это избавляет от необходимости переключать пользователей.

Выполните следующую команду:
sudo -u postgres psql
Эта команда запускает psql от имени пользователя postgres. Вы будете напрямую подключены к оболочке psql.
Снова, чтобы выйти из оболочки psql, введите \q и нажмите Enter:
postgres=## \q
Вы вернетесь в командную строку пользователя labex.
Таким образом, вы изучили два способа доступа к оболочке psql: переключение на пользователя postgres и использование sudo. Оба метода приводят к одному и тому же результату, но использование sudo в некоторых случаях может быть удобнее.
Изучение баз данных по умолчанию
На этом этапе мы изучим базы данных, которые создаются автоматически при установке PostgreSQL. Эти базы данных обеспечивают базовую функциональность и содержат информацию о сервере PostgreSQL.
Сначала откройте оболочку psql от имени пользователя postgres. Вы можете использовать следующую команду:
sudo -u postgres psql
Находясь в оболочке psql, вы можете вывести список доступных баз данных с помощью команды \l. Выполните следующую команду:
postgres=## \l
Эта команда отобразит список баз данных, а также информацию об их владельцах, кодировках и правах доступа. Вы должны увидеть как минимум три базы данных:
postgres: Это база данных по умолчанию, к которой вы подключаетесь при первом входе вpsql. Она часто используется для административных задач.template0: Эта база данных используется как шаблон для создания новых баз данных. Не рекомендуется изменять эту базу данных.template1: Еще одна шаблонная база данных для создания новых БД. Это стандартный шаблон, который можно настраивать.

Чтобы подключиться к конкретной базе данных, используйте команду \c, за которой следует имя базы данных. Например, чтобы подключиться к базе данных postgres, выполните:
postgres=## \c postgres
Вы увидите сообщение о том, что теперь вы подключены к базе данных postgres:
You are now connected to database "postgres" as user "postgres".
Теперь, когда вы подключены к базе данных postgres, вы можете изучить ее содержимое. Например, можно вывести список таблиц в базе данных с помощью команды \dt:
postgres=## \dt
Эта команда отобразит список таблиц в текущей базе данных. Поскольку база данных postgres в основном используется для административных задач, в ней может не быть пользовательских таблиц.
Вы также можете просмотреть информацию о текущем соединении с базой данных с помощью команды \conninfo:
postgres=## \conninfo
Эта команда отобразит такие данные, как имя базы данных, пользователь, хост и порт.
Чтобы отключиться от текущей базы данных и вернуться к соединению по умолчанию, используйте команду \c без указания имени базы данных:
postgres=## \c
Это вернет вас к соединению с базой данных по умолчанию (обычно это postgres).

Наконец, выйдите из оболочки psql, введя \q и нажав Enter:
postgres=## \q
Вы вернетесь в командную строку пользователя labex.
На этом этапе вы научились выводить список доступных баз данных, подключаться к конкретной базе данных и изучать ее содержимое с помощью оболочки psql.
Проверка статуса сервера и базовой конфигурации
На этом этапе мы проверим статус сервера PostgreSQL и изучим некоторые базовые параметры конфигурации.
Как упоминалось ранее, поскольку виртуальная машина LabEx работает в контейнере Docker, команды systemctl могут работать не так, как ожидается. Поэтому мы будем использовать pg_isready и psql для проверки состояния сервера.
Сначала повторно убедимся, что сервер PostgreSQL запущен. Выполните команду:
pg_isready
Если PostgreSQL запущен, вы увидите:
/var/run/postgresql:5432 - accepting connections
Теперь проверим некоторые базовые настройки конфигурации через оболочку psql. Запустите psql от имени пользователя postgres:
sudo -u postgres psql
Внутри оболочки psql можно проверить версию PostgreSQL с помощью следующего SQL-запроса:
SELECT version();
Выполните этот запрос. Вы должны увидеть вывод, похожий на этот:
version
----------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)
Это показывает версию PostgreSQL, установленную на сервере.
Вы также можете проверить текущего пользователя базы данных:
SELECT user;
Результат будет:
user
----------
postgres
(1 row)
Чтобы узнать имя базы данных, к которой вы сейчас подключены, используйте:
SELECT current_database();
Результат будет:
current_database
------------------
postgres
(1 row)
Для просмотра параметров конфигурации можно использовать команду SHOW. Например, чтобы проверить параметр listen_addresses, который определяет IP-адреса, на которых сервер ожидает соединения, выполните:
SHOW listen_addresses;
Скорее всего, вывод будет таким:
listen_addresses
--------------------
localhost
(1 row)
localhost означает, что сервер ожидает соединения только с локального хоста.
Еще один полезный параметр — port, который указывает номер порта, на котором сервер ожидает подключения:
SHOW port;
Результат будет:
port
------
5432
(1 row)
Это подтверждает, что сервер слушает порт 5432 — стандартный порт PostgreSQL.

Наконец, выйдите из оболочки psql, введя \q и нажав Enter:
postgres=## \q
Вы вернетесь в командную строку пользователя labex.
На этом этапе вы научились проверять статус сервера PostgreSQL и изучили некоторые базовые параметры конфигурации с помощью pg_isready и оболочки psql.
Резюме
В этой лабораторной работе мы установили СУБД PostgreSQL на виртуальную машину LabEx, используя команды apt update и apt install postgresql postgresql-contrib -y. Флаг -y использовался для автоматического подтверждения запросов во время установки.
После установки мы убедились, что служба PostgreSQL запущена и принимает соединения. Поскольку виртуальная машина LabEx работает в контейнере Docker, мы использовали команду pg_isready вместо systemctl status postgresql для проверки статуса сервера. Ожидаемый вывод pg_isready при работающем сервере: /var/run/postgresql:5432 - accepting connections.


