Как установить и использовать PostgreSQL 18 на Ubuntu 24.04 LTS

PostgreSQL (сокращенно Postgres) – это мощная, передовая, высокопроизводительная и стабильная реляционная система баз данных с открытым исходным кодом, которая расширяет язык SQL и включает широкий набор функций для безопасного хранения и управления данными.

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

Кроме того, Postgres обладает широкими возможностями расширения, такими как расширенное индексирование, полнотекстовый поиск, и поставляется с API-интерфейсами, позволяющими разрабатывать собственные решения для решения задач хранения данных.

В этой статье мы расскажем, как установить PostgreSQL 18 (релиз которого состоялся 25 сентября 2025 года) на Сервер Ubuntu 24.04 LTS и изучим основные способы его эффективного использования.

Как установить PostgreSQL на Ubuntu 24.04

PostgreSQL по умолчанию поставляется в комплекте со всеми версиями Ubuntu. Однако Ubuntu включает в себя определенный снимок PostgreSQL, который остается фиксированным на протяжении всего жизненного цикла данного выпуска Ubuntu.

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

sudo apt install -y postgresql-common ca-certificates
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

Теперь обновите список пакетов и установите PostgreSQL (последняя версия на сегодняшний день – PostgreSQL 18):

sudo apt update
sudo apt install postgresql-18 postgresql-contrib-18

Установите pgAdmin 4 для администрирования PostgreSQL

Если вы предпочитаете графический интерфейс для управления базами данных PostgreSQL, вы можете установить pgAdmin 4, официальный инструмент управления PostgreSQL, который позволяет вам управлять базами данных, пользователями, запросами и многим другим – все это с веб-панели.

В Ubuntu 24.04 pgAdmin 4 недоступен в стандартных репозиториях, поэтому используйте официальный репозиторий pgAdmin.

sudo apt install -y curl ca-certificates gnupg
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

После добавления репозитория вы можете установить pgAdmin 4, как показано на рисунке.

Install for both desktop and web modes
sudo apt install pgadmin4
Install for desktop mode only
sudo apt install pgadmin4-desktop
Install for web mode only 
sudo apt install pgadmin4-web 
Configure the webserver, if you installed pgadmin4-web:
sudo /usr/pgadmin4/bin/setup-web.sh

После установки служба PostgreSQL должна запуститься автоматически, и вы можете подтвердить ее статус, выполнив команду:

sudo systemctl status postgresql

Чтобы включить запуск PostgreSQL при загрузке (если он еще не включен):

sudo systemctl enable postgresql

После этого вы можете открыть pgAdmin в браузере по адресу:

http://127.0.0.1/pgadmin4

Как использовать роли и базы данных PostgreSQL

В PostgreSQL аутентификация клиента контролируется конфигурационным файлом /etc/postgresql/18/main/pg_hba.conf (номер версии может отличаться в зависимости от вашей установки).

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

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

sudo nano /etc/postgresql/18/main/pg_hba.conf

Понимание ролей PostgreSQL

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

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

Роли могут:

  • Владеть объектами базы данных (таблицами, представлениями, функциями и т. д.).
  • Назначать привилегии на эти объекты другим ролям.
  • Предоставление членства в роли другой роли (наследование роли).

Включение шифрованных паролей для ролей PostgreSQL

Чтобы настроить роли на использование зашифрованных паролей вместо аутентификации с помощью аналогов, вам нужно изменить файл pg_hba.conf. Измените метод аутентификации с peer на scram-sha-256 (современный безопасный метод) или md5 для аутентификации по паролю.

sudo nano /etc/postgresql/18/main/pg_hba.conf

Найдите строки, которые выглядят как:

TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     peer

И измените на:

TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer
local   all             all                                     scram-sha-256

Это сохраняет аутентификацию peer для пользователя postgres, но требует паролей для других пользователей.

Затем перезапустите службу PostgreSQL, чтобы применить изменения:

sudo systemctl restart postgresql

Как использовать PostgreSQL на Ubuntu

После того как все настроено, вы можете получить доступ к системной учетной записи postgres с помощью следующей команды, где флаг -i указывает sudo на запуск оболочки, указанной в записи базы данных паролей целевых пользователей, в качестве оболочки для входа в систему.

sudo -i -u postgres
psql    # to launch the postgres shell program

Чтобы получить доступ к оболочке postgres напрямую, без предварительного доступа к учетной записи пользователя postgres, выполните команду:

sudo -u postgres psql

Вы можете выйти из оболочки postgres, набрав \q или нажав Ctrl + D.

\q

Создание ролей базы данных PostgreSQL

Создайте новую роль пользователя с помощью следующей команды:

CREATE ROLE tecmint;

Чтобы создать роль с атрибутом LOGIN (роли с атрибутом LOGIN можно считать такими же, как пользователи базы данных):

CREATE ROLE tecmint LOGIN;

Или используйте команду CREATE USER, которая по умолчанию принимает на себя функцию входа в систему:

CREATE USER tecmint;

Создание роли с паролем

Роль также можно создать с паролем, что очень важно, если вы настроили метод аутентификации клиента на использование зашифрованных паролей:

CREATE ROLE tecmint WITH LOGIN PASSWORD 'secure_password_here';

Или с помощью синтаксиса CREATE USER:

CREATE USER tecmint WITH PASSWORD 'secure_password_here';

Создание роли с дополнительными привилегиями

Вы можете создать роль с привилегиями суперпользователя (используйте осторожно):

CREATE ROLE admin WITH LOGIN PASSWORD 'admin_password' SUPERUSER;

Или создайте роль, которая может создавать базы данных:

CREATE ROLE developer WITH LOGIN PASSWORD 'dev_password' CREATEDB;

Список существующих ролей баз данных PostgreSQL

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

\du              -- shows actual users with details

Или:

SELECT rolname FROM pg_roles;

Для получения более подробной информации:

\du+

Изменение ролей базы данных PostgreSQL

Чтобы изменить пароль роли:

ALTER ROLE tecmint WITH PASSWORD 'new_password';

Чтобы предоставить привилегии суперпользователя существующей роли:

ALTER ROLE tecmint WITH SUPERUSER;

Чтобы отозвать привилегии суперпользователя:

ALTER ROLE tecmint WITH NOSUPERUSER;

Снятие роли базы данных PostgreSQL

Чтобы отказаться от существующей роли пользователя, используйте команду DROP ROLE:

DROP ROLE tecmint;

Примечание: Вы не можете отказаться от роли, которая владеет объектами базы данных, вы должны сначала переназначить или отказаться от этих объектов.

Создание базы данных PostgreSQL

Создав роль с определенным именем (например, tecmint user), вы можете создать базу данных, которая будет управляться этой ролью:

CREATE DATABASE tecmint;

Чтобы создать базу данных, принадлежащую определенной роли:

CREATE DATABASE tecmint OWNER tecmint;

Чтобы создать базу данных с определенной кодировкой:

CREATE DATABASE tecmint ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' OWNER tecmint;

Предоставление привилегий роли

После создания базы данных предоставьте все привилегии роли:

GRANT ALL PRIVILEGES ON DATABASE tecmint TO tecmint;

Теперь, чтобы управлять базой данных tecmint, войдите в оболочку postgres с ролью tecmint:

psql -U tecmint -d tecmint

Если вам будет предложено ввести пароль, введите пароль, который вы установили для роли.

Создание таблицы PostgreSQL

Создайте тестовую таблицу authors, в которой хранится информация об авторах TecMint.com:

CREATE TABLE authors (
    code      SERIAL PRIMARY KEY,
    name      VARCHAR(40) NOT NULL,
    city      VARCHAR(40) NOT NULL,
    joined_on DATE NOT NULL
);

Примечание: Мы используем SERIAL для первичного ключа, который автоматически генерирует последовательные номера, что более практично, чем присваивать коды вручную.

Вставка данных в таблицу PostgreSQL

После создания таблицы заполните ее некоторыми данными:

INSERT INTO authors (name, city, joined_on) VALUES 
    ('Ravi Saive', 'Mumbai', '2012-08-15'),
    ('Aaron Kili', 'Nairobi', '2014-03-20'),
    ('Matei Cezar', 'Bucharest', '2015-06-10');

Запрос данных из таблицы PostgreSQL

Чтобы просмотреть данные, хранящиеся в таблице, выполните команду SELECT:

SELECT * FROM authors;

Для конкретных столбцов:

SELECT name, city FROM authors;

С фильтрацией:

SELECT * FROM authors WHERE city = 'Mumbai';

С упорядочиванием:

SELECT * FROM authors ORDER BY joined_on DESC;

Обновление данных в таблице PostgreSQL

Чтобы изменить существующие данные:

UPDATE authors SET city = 'Delhi' WHERE name = 'Ravi Saive';

Удаление данных из таблицы PostgreSQL

Чтобы удалить определенные строки:

DELETE FROM authors WHERE name = 'Ravi Saive';

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

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

\dt

Для получения более подробной информации:

\dt+

Чтобы увидеть структуру таблицы:

\d authors

Изменение структуры таблиц PostgreSQL

Чтобы добавить новый столбец в существующую таблицу:

ALTER TABLE authors ADD COLUMN email VARCHAR(100);

Чтобы удалить столбец:

ALTER TABLE authors DROP COLUMN email;

Чтобы переименовать столбец:

ALTER TABLE authors RENAME COLUMN code TO author_id;

Удаление/удаление таблицы PostgreSQL

Чтобы удалить таблицу в текущей базе данных, выполните следующие действия:

DROP TABLE authors;

Удалить с каскадом (удаляет зависимые объекты):

DROP TABLE authors CASCADE;

Список всех баз данных PostgreSQL

Чтобы вывести список всех баз данных, используйте любую из следующих команд:

SELECT datname FROM pg_database;

Или для получения подробного описания:

\list

Или сокращение:

\l

Удаление/удаление базы данных PostgreSQL

Если вы хотите удалить базу данных:

DROP DATABASE tecmint;

Предупреждение: Это навсегда удаляет все данные в базе данных.

Переход на другую базу данных PostgreSQL

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

\connect database_name

Или сокращенно:

\c database_name

Настройка PostgreSQL для удаленного доступа

По умолчанию PostgreSQL принимает соединения только с localhost.

Чтобы разрешить удаленные соединения, необходимо отредактировать файл postgresql.conf.

sudo nano /etc/postgresql/18/main/postgresql.conf

Найдите строку:

#listen_addresses = 'localhost'

Измените ее на:

listen_addresses = '*'

Далее отредактируйте файл pg_hba.conf.

sudo nano /etc/postgresql/18/main/pg_hba.conf

Добавьте строку, разрешающую подключения из вашей сети (замените 192.168.1.0/24 на вашу сеть):

TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/24          scram-sha-256

Или разрешить с любого IP (менее безопасно):

host    all             all             0.0.0.0/0               scram-sha-256

Разрешить PostgreSQL через брандмауэр:

sudo ufw allow 5432/tcp

Наконец, перезапустите PostgreSQL.

sudo systemctl restart postgresql

Базовый тюнинг производительности PostgreSQL

Для повышения производительности на Ubuntu 24.04 измените эти настройки в postgresql.conf:

sudo nano /etc/postgresql/18/main/postgresql.conf

Рекомендуемые изменения (настраивайте в зависимости от оперативной памяти вашего сервера):

shared_buffers = 256MB              # 25% of RAM
effective_cache_size = 1GB          # 50-75% of RAM
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 4MB

После внесения изменений перезапустите PostgreSQL:

sudo systemctl restart postgresql

Резервное копирование и восстановление баз данных PostgreSQL

Для резервного копирования одной базы данных:

pg_dump -U postgres tecmint > tecmint_backup.sql

Для резервного копирования всех баз данных.

pg_dumpall -U postgres > all_databases_backup.sql

Восстановление базы данных.

psql -U postgres tecmint < tecmint_backup.sql

Справочник по полезным командам PostgreSQL

Здесь представлен краткий справочник часто используемых команд PostgreSQL:

Команда Описание
\l или \list Список всех баз данных
\c dbname Подключиться к базе данных
\dt Список всех таблиц
\d tablename Описать структуру таблицы
\du Перечислите все роли/пользователей
\dn Перечислите все схемы
\df Список всех функций
\dv Список всех представлений
\timing Переключение синхронизации запросов
\x Переключение расширенного отображения
\i filename Выполнение команд из файла
\q Выход из psql
\h Справка по командам SQL
\? Помощь по командам psql

Заключение

Вот и все! В этой статье мы рассказали, как установить и использовать систему управления базами данных PostgreSQL на Ubuntu 24.04 LTS.

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

Для получения дополнительной информации обратитесь к официальной документации PostgreSQL 18 или изучите полезные веб-сайты для изучения PostgreSQL.

Зарубин Иван Эксперт по Linux и Windows

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

Похожие статьи

Комментарии (0)