Установка и начальная настройка PostgreSQL

PostgreSQLBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе мы установим и выполним начальную настройку 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

Вывод процесса установки PostgreSQL

Флаг -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, подтверждающий успешную установку

Если 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. Это избавляет от необходимости переключать пользователей.

Пример выполнения команды psql

Выполните следующую команду:

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: Еще одна шаблонная база данных для создания новых БД. Это стандартный шаблон, который можно настраивать.

Список доступных баз данных PostgreSQL

Чтобы подключиться к конкретной базе данных, используйте команду \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 для подключения к базе данных 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 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.