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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы установим и выполним начальную настройку PostgreSQL на виртуальной машине LabEx. Цель состоит в том, чтобы запустить и настроить PostgreSQL и проверить его базовую функциональность.

Мы начнем с обновления списков пакетов и установки сервера PostgreSQL вместе с пакетом postgresql-contrib. После установки мы проверим, что служба PostgreSQL запущена и принимает подключения с помощью команды pg_isready. Наконец, мы рассмотрим базы данных по умолчанию и проверим статус сервера и базовую конфигурацию.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/db_setup("Create New Database") postgresql/PostgreSQLGroup -.-> postgresql/db_access("Connect To Database") postgresql/PostgreSQLGroup -.-> postgresql/db_status("Check Database Status") postgresql/PostgreSQLGroup -.-> postgresql/sys_version("Get Server Version") subgraph Lab Skills postgresql/db_setup -.-> lab-550900{{"Установка и первоначальная настройка PostgreSQL"}} postgresql/db_access -.-> lab-550900{{"Установка и первоначальная настройка PostgreSQL"}} postgresql/db_status -.-> lab-550900{{"Установка и первоначальная настройка PostgreSQL"}} postgresql/sys_version -.-> lab-550900{{"Установка и первоначальная настройка PostgreSQL"}} end

Установка PostgreSQL и проверка установки

На этом этапе мы установим PostgreSQL на виртуальную машину LabEx и проверим, что установка прошла успешно. PostgreSQL - это мощная, открытый исходный код реляционная система управления базами данных (RDBMS).

Сначала обновим списки пакетов для обновлений и новых установок. Откройте терминал на виртуальной машине LabEx. Вы можете найти значок терминала на рабочем столе.

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

sudo apt update

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

Далее установите сервер PostgreSQL и пакет postgresql-contrib. Пакет postgresql-contrib предоставляет дополнительные утилиты и функциональность, которые часто бывают полезными.

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

sudo apt install postgresql postgresql-contrib -y
postgresql-contrib

Флаг -y автоматически отвечает "да" на любые запросы во время процесса установки. Эта команда загрузит и установит 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.

Сначала переключимся на пользователя 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: Это еще одна база данных-шаблон, которая используется для создания новых баз данных. Это стандартный шаблон и его можно настроить.
psql-l

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

Наконец, выйдите из оболочки 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();

Выполните этот запрос в оболочке psql. Вы должны увидеть вывод, похожий на следующий:

                                                                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
--------------------
 *
(1 row)

Знак * означает, что сервер принимает подключения на всех доступных IP-адресах.

Еще одна полезная настройка для проверки - port, которая указывает номер порта, на котором сервер принимает подключения:

SHOW port;

Вывод будет следующим:

 port
------
 5432
(1 row)

Это означает, что сервер принимает подключения на порту 5432, который является портом по умолчанию для PostgreSQL.

psql-show

Наконец, выйдите из оболочки psql, введя \q и нажав Enter:

postgres=## \q

Это вернет вас в оболочку пользователя labex.

На этом этапе вы узнали, как проверить статус сервера PostgreSQL и рассмотреть некоторые базовые настройки конфигурации с помощью pg_isready и оболочки psql.

Резюме

В этом практическом занятии мы установили реляционную систему управления базами данных (RDBMS) 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.