Поиск по сайту:

Как установить и использовать PostgreSQL в Rocky Linux 9


Введение

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

параллелизм без блокировки чтения.

Следуя этому руководству, вы установите последнюю версию PostgreSQL на сервер Rocky Linux 9.

Предпосылки

Для выполнения этого руководства вам понадобится сервер под управлением Rocky Linux 9. На этом сервере должен быть пользователь без полномочий root с правами администратора и брандмауэр, настроенный с помощью firewalld. Чтобы настроить это, см. наше руководство по начальной настройке сервера для Rocky Linux 9.

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

PostgreSQL доступен в стандартном репозитории программного обеспечения Rocky Linux и может быть установлен с помощью dnf, менеджера пакетов Rocky. Вы также должны одновременно установить другой пакет с именем glibc-all-langpacks, чтобы улучшить многоязычную поддержку в Postgres. Установите их оба с помощью dnf install:

  1. sudo dnf install postgresql-server glibc-all-langpacks

При появлении запроса подтвердите установку, нажав y, а затем ENTER:

По умолчанию Rocky Linux 9 устанавливает PostgreSQL версии 13. Теперь, когда программное обеспечение установлено, вы должны выполнить некоторые шаги по инициализации, чтобы подготовить новый кластер базы данных для PostgreSQL.

Шаг 2 — Создание нового кластера базы данных PostgreSQL

Вам необходимо создать новый кластер базы данных PostgreSQL, прежде чем вы сможете начать создавать таблицы и загружать в них данные. Кластер баз данных — это набор баз данных, управляемых одним экземпляром сервера. Создание кластера базы данных состоит из создания каталогов, в которых будут размещаться данные базы данных, создания общих таблиц каталога и создания баз данных template1 и postgres.

База данных template1 — это своего рода шаблон, используемый для создания новых баз данных; все, что хранится в template1, даже объекты, которые вы добавляете сами, будут помещены в новые базы данных при их создании. База данных postgres — это база данных по умолчанию, предназначенная для использования пользователями, утилитами и сторонними приложениями.

Пакет Postgres, который мы установили на предыдущем шаге, поставляется с удобным скриптом под названием postgresql-setup, который помогает с низкоуровневым администрированием кластера баз данных. Чтобы создать кластер базы данных, запустите скрипт с помощью sudo и с параметром --initdb:

  1. sudo postgresql-setup --initdb

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

Output
* Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Теперь запустите службу PostgreSQL с помощью systemctl:

  1. sudo systemctl start postgresql

Затем используйте systemctl еще раз, чтобы разрешить запуск службы при каждой загрузке сервера:

  1. sudo systemctl enable postgresql

Это даст следующий вывод

Output
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

Теперь, когда PostgreSQL настроен и работает, мы рассмотрим использование ролей, чтобы узнать, как работает Postgres и чем он отличается от аналогичных систем управления базами данных, которые вы могли использовать в прошлом.

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

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

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

Процедура установки создала учетную запись пользователя с именем postgres, связанную с ролью postgres по умолчанию. Чтобы использовать PostgreSQL, вы можете войти в эту учетную запись.

Есть несколько способов использовать эту учетную запись для доступа к командной строке PostgreSQL.

Переключение на учетную запись postgres

Переключитесь на учетную запись postgres на своем сервере, набрав:

  1. sudo -i -u postgres

Теперь вы можете сразу получить доступ к приглашению Postgres, набрав:

  1. psql

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

Выйдите из командной строки PostgreSQL, набрав:

  1. \q

Это вернет вас в командную строку Linux учетной записи postgres. Теперь вернитесь к исходной учетной записи со следующим:

  1. exit

Доступ к приглашению Postgres без переключения учетных записей

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

Например, в предыдущем примере вам было предложено получить доступ к приглашению Postgres, сначала переключившись на пользователя postgres, а затем запустив psql, чтобы открыть приглашение Postgres. В качестве альтернативы вы можете сделать это за один шаг, выполнив единственную команду psql от имени пользователя postgres с помощью sudo, например:

  1. sudo -u postgres psql

Это позволит вам напрямую войти в Postgres без промежуточной оболочки bash.

Опять же, вы можете выйти из интерактивного сеанса Postgres, набрав:

  1. \q

На этом шаге вы использовали учетную запись postgres для доступа к приглашению psql. Но для многих вариантов использования требуется более одной роли Postgres. Читайте дальше, чтобы узнать, как настроить новые роли.

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

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

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

  1. createuser --interactive

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

  1. sudo -u postgres createuser --interactive

Сценарий предложит вам несколько вариантов и, основываясь на ваших ответах, выполнит необходимые команды Postgres для создания пользователя в соответствии с вашими требованиями. Для этого руководства создайте роль с именем sammy и предоставьте ей привилегии суперпользователя, введя y при появлении запроса:

Output
Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

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

  1. man createuser

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

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

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

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

Если вы вошли в систему как учетная запись postgres, вы должны ввести что-то вроде:

  1. createdb sammy

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

  1. sudo -u postgres createdb sammy

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

Теперь, когда вы создали новую базу данных, вы войдете в нее со своей новой ролью.

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

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

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

  1. sudo adduser sammy

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

  1. sudo -i -u sammy
  2. psql

Или вы можете сделать это встроенным:

  1. sudo -u sammy psql

Эта команда автоматически войдет в систему.

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

  1. psql -d sammy

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

  1. \conninfo

Это покажет следующий вывод:

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

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

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

Шаг 7 — Создание и удаление таблиц

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

Сначала создайте таблицу для хранения некоторых данных. В качестве примера вы составите таблицу с описанием оборудования для игровых площадок.

Основной синтаксис этой команды следующий:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

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

Для демонстрационных целей создайте такую таблицу:

  1. CREATE TABLE playground (
  2. equip_id serial PRIMARY KEY,
  3. type varchar (50) NOT NULL,
  4. color varchar (25) NOT NULL,
  5. location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  6. install_date date
  7. );

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

Для двух столбцов (equip_id и install_date) команда не указывает длину поля. Это связано с тем, что для некоторых типов столбцов не требуется заданная длина, поскольку длина подразумевается типом.

Следующие две строки создают столбцы для оборудования type и color соответственно, каждый из которых не может быть пустым. Строка после них создает столбец location и ограничение, которое требует, чтобы значение было одним из восьми возможных значений. Последняя строка создает столбец даты, в котором записывается дата, когда вы установили оборудование.

Вы можете увидеть свою новую таблицу, набрав:

  1. \d

Это покажет следующий вывод:

Output
List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

Ваша игровая таблица находится здесь, но есть также что-то под названием playground_equip_id_seq типа sequence. Это представление типа serial, которое вы указали в столбце equip_id. Это отслеживает следующее число в последовательности и создается автоматически для столбцов этого типа.

Если вы хотите увидеть только таблицу без последовательности, вы можете ввести:

  1. \dt

Это даст следующее:

Output
List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

На этом шаге вы создали образец таблицы. На следующем шаге вы попробуете добавлять, запрашивать и удалять записи в этой таблице.

Шаг 8 — Добавление, запрос и удаление данных в таблице

Теперь, когда у вас есть таблица, вы можете вставить в нее некоторые данные.

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

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

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

Еще одна вещь, о которой следует помнить, это то, что вы не вводите значение для столбца equip_id. Это связано с тем, что он автоматически генерируется всякий раз, когда создается новая строка в таблице.

Получите информацию, которую вы добавили, набрав:

  1. SELECT * FROM playground;

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

Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

Здесь вы можете видеть, что ваш equip_id был успешно заполнен и что все остальные ваши данные были организованы правильно.

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

  1. DELETE FROM playground WHERE type = 'slide';

Снова запросите таблицу:

  1. SELECT * FROM playground;

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

Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

Обратите внимание, что ваш слайд больше не является частью таблицы.

Теперь, когда вы добавили и удалили записи в своей таблице, вы можете попробовать добавить и удалить столбцы.

Шаг 9 — Добавление и удаление столбцов из таблицы

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

  1. ALTER TABLE playground ADD last_maint date;

Если вы снова просмотрите информацию о своей таблице, вы увидите, что новый столбец был добавлен (но данные не были введены):

  1. SELECT * FROM playground;

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

Output
equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

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

  1. ALTER TABLE playground DROP last_maint;

При этом удаляется столбец last_maint и все найденные в нем значения, но все остальные данные остаются нетронутыми.

Теперь, добавив и удалив столбцы, вы можете попробовать обновить существующие данные на последнем шаге.

Шаг 10 — Обновление данных в таблице

До сих пор вы узнали, как добавлять записи в таблицу и как их удалять, но в этом руководстве еще не рассказывалось, как изменять существующие записи.

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

  1. UPDATE playground SET color = 'red' WHERE type = 'swing';

Вы можете убедиться, что операция прошла успешно, повторно запросив данные:

  1. SELECT * FROM playground;

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

Output
equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2010-08-16 (1 row)

Как видите, ваш слайд зарегистрирован как красный.

Заключение

Теперь вы настроили PostgreSQL на своем сервере Rocky Linux 9. Однако с Postgres еще многое предстоит узнать. Вот еще несколько руководств по использованию Postgres:

  • Сравнение систем управления реляционными базами данных
  • Узнайте, как выполнять запросы в PostgreSQL.