Введение

PostgreSQL, или Postgres, — это система управления реляционными базами данных, которая представляет собой реализацию языка запросов SQL. Она соответствует стандартам и обладает множеством передовых функций, таких как надежность и параллельность операций без блокировки при чтении.

В этом обучающем руководстве мы рассмотрим, как установить Postgres на сервер Ubuntu 20.04.

Предварительные требования

postgresql illustration for: Предварительные требования

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

Шаг 1 — Установка PostgreSQL

Для установки PostgreSQL в первую очередь обновите локальный индекс пакетов вашего сервера:

				
					
sudo apt update

				
			

После этого установите пакет Postgres вместе с пакетом -contrib, который содержит дополнительные утилиты и функциональные возможности:

				
					
sudo apt install postgresql postgresql-contrib

				
			

Шаг 2 — Использование ролей и баз данных в PostgreSQL

По умолчанию Postgres использует концепцию «ролей» для выполнения аутентификации и авторизации. В некоторых аспектах они аналогичны обычным пользователям и группам в Unix.

После установки Postgres настроена на использование аутентификации *ident*, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.

В ходе установки была создана учетную запись пользователя postgres, которая связана с используемой по умолчанию ролью postgres. Существует несколько способов использования этой учетной записи для доступа к Postgres. Один из способов — переход к учетной записи postgres на вашем сервере с помощью следующей команды:

				
					
sudo -i -u postgres

				
			

Затем вы можете получить доступ к командной строке Postgres с помощью команды:

				
					
psql

				
			

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

Для выхода из командной строки PostgreSQL выполните следующую команду:

				
					
\q

				
			

В результате вы вернетесь в командную строку postgres в Linux.

Также вы можете запустить необходимую вам команду с учетной записью postgres напрямую с помощью sudo:

				
					
sudo -u postgres psql

				
			

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

Вы снова сможете выйти из интерактивного сеанса Postgres с помощью следующей команды:

				
					
\q

				
			

Шаг 3 — Создание новой роли

Если вы выполнили вход в учетную запись postgres, то можете создать новую роль с помощью следующей команды:

				
					
createuser --interactive

				
			

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

				
					
sudo -u postgres createuser --interactive

				
			

В любом случае скрипт будет предлагать варианты на выбор и, исходя из ваших ответов, выполнять нужные команды Postgres для создания пользователя в соответствии с вашими спецификациями.

				
					
[secondary_label Output]

Enter name of role to add: <^>sammy<^>

Shall the new role be a superuser? (y/n) <^>y<^>

				
			

Шаг 4 — Создание новой базы данных

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

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

Если вы используете учетную запись postgres, необходимо ввести следующее:

				
					
createdb <^>sammy<^>

				
			

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

				
					
sudo -u postgres createdb <^>sammy<^>

				
			

Шаг 5 — Открытие командной строки Postgres с новой ролью

Чтобы выполнить аутентификацию с помощью ident, вам потребуется пользователь Linux с тем же именем, что и имя роли и базы данных в Postgres.

Если у вас нет соответствующего пользователя Linux, то вы можете создать его с помощью команды adduser. Вы должны воспользоваться учетной записи без прав root с привилегиями sudo (т.е. не выполняя вход в качестве пользователя postgres):

				
					
sudo adduser <^>sammy<^>

				
			

Когда новая учетная запись будет доступна, вы можете переключиться и подключиться к базе данных следующим образом:

				
					
sudo -i -u <^>sammy<^>

psql

				
			

Либо же вы можете сделать следующее:

				
					
sudo -u <^>sammy<^> psql

				
			

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

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

				
					
psql -d <^>postgres<^>

				
			

После входа вы можете проверить данные о текущем подключении:

				
					
\conninfo

				
			
				
					
[secondary_label Output]

You are connected to database "<^>sammy<^>" as user "<^>sammy<^>" via socket in "/var/run/postgresql" at port "5432".

				
			

Заключение

Вы настроили PostgreSQL на сервере Ubuntu 20.04. Если вы хотите узнать больше о системе Postgres и способах ее использования, мы рекомендуем вам изучить следующие руководства: