Как установить postgresql на centos 8

Обновлено: 06.07.2024

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

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

Данный мануал поможет установить PostgreSQL на облачный сервер CentOS 8 и научит работать с этой СУБД.

Требования

Для работы вам нужен сервер CentOS 8 с пользователем sudo и брандмауэром firewalld, настроенный по этому мануалу.

1: Установка PostgreSQL

Пакет PostgreSQL можно загрузить из стандартного репозитория CentOS 8, который называется AppStream. Здесь вы найдете множество доступных версий. Чтобы выбрать необходимую версию, вы должны активировать соответствующую коллекцию пакетов (коллекции называются потоками модулей).

В DNF (стандартном менеджере пакетов CentOS 8) модулями называются специальные наборы RPM-пакетов, которые вместе составляют большее приложение. Такой подход делает установку пакетов и их зависимостей более интуитивным.

Запросите список доступных потоков для модуля postgresql с помощью dnf:

dnf module list postgresql
postgresql 9.6 client, server [d] PostgreSQL server and client module

postgresql 10 [d] client, server [d] PostgreSQL server and client module

postgresql 12 client, server PostgreSQL server and client module

В этом выводе показано, что в AppStream доступны три версии PostgreSQL: 9.6, 10 и 12. Поток, который предоставляет версию 10, является потоком по умолчанию (на это указывает [d]). Если вы хотите установить эту версию, вы можете просто запустить команду:

sudo dnf install postgresql-server

и перейти к следующему разделу мануала. Хотя версия 10 все еще поддерживается, в этом мануале мы установим версию 12, последний релиз на момент написания этой статьи.

Чтобы установить PostgreSQL версии 12, вы должны включить поток модулей этой версии. При включении этого потока вы переопределите поток по умолчанию и сделаете все пакеты, связанные с включенным потоком, доступными в системе. Обратите внимание: в системе можно включить только один поток любого из существующих модулей.

Чтобы включить поток Postgres для версии 12, выполните следующую команду:

sudo dnf module enable postgresql:12

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

Включив поток для версии 12, вы можете установить пакет postgresql-server, после чего у вас появится PostgreSQL 12 и все зависимости этой СУБД.

sudo dnf install postgresql-server

. . .
Install 4 Packages
Total download size: 16 M
Installed size: 62 M
Is this ok [y/N]: y

Установка PostgreSQL завершена. Теперь можно ознакомиться с её функциями и создать новый кластер.

2: Создание кластера PostgreSQL

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

База данных template1 необходима для создания новой БД. Все, что хранится в ней, будет помещено в новую базу данных при ее создании. postgres – это база данных по умолчанию, предназначенная для работы с пользователями, утилитами и сторонними приложениями.

Пакет Postgres, который мы установили на предыдущем этапе, поставляется с удобным скриптом postgresql-setup, который берет на себя низкоуровневое администрирование кластера базы данных.

sudo postgresql-setup --initdb

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

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

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

sudo systemctl start postgresql

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

sudo systemctl enable postgresql

Вы увидите такой вывод:

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

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

3: Роли и базы данных PostgreSQL

По умолчанию PostgreSQL использует так называемые роли. Они чем-то похожи на учётные записи пользователей или группы в Unix-подобных системах. Только система PostgreSQL не различает пользователей и группы, она объединяет их под понятием «роли».

Во время установки PostgreSQL использует модель аутентификации ident, которая связывает роли PostgreSQL со стандартными пользователями Unix/Linux. Открыть существующую роль можно при помощи связанной с ней учётной записи Linux.

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

Существует несколько способов получить доступ к PostgreSQL при помощи этого аккаунта.

Пользователь postgres

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

sudo -i -u postgres

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

Команда выполнит вход и откроет доступ к управлению СУБД.

Чтобы закрыть командную строку PostgreSQL, наберите:

Это вернёт вас в командную строку Linux. Чтобы вернуться в сессию обычного пользователя sudo, введите:

Прямой доступ к командной строке PostgreSQL

Также можно получить доступ к командной строке PostgreSQL, не изменяя при этом сессии пользователя. Для этого нужен доступ к команде sudo.

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

sudo -u postgres psql

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

Чтобы закрыть эту командную строку, введите:

4: Создание роли

В сессии пользователя postgres создать нового пользователя можно с помощью команды:

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

sudo -u postgres createuser --interactive

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

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

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

5: Создание базы данных

По умолчанию роль Postgres запрашивает одноименную базу данных. Потому следует создать такую БД для нового пользователя.

Только что вы создали нового пользователя (в мануале он условно называется 8host). Для создания БД используется команда createdb.

В сессии пользователя postgres создать новую БД можно с помощью команды:

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

sudo -u postgres createdb 8host

6: Аутентификация новой роли PostgreSQL

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

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

sudo adduser 8host

После этого можно перейти в сессию нового пользователя и подключиться к БД:

sudo - sudo -i -u 8host
psql

Или же подключиться к БД напрямую:

sudo -u 8host psql

Если все предыдущие настройки были выполнены правильно, команда автоматически подключится к БД.

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

psql -d postgres

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

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

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)
);

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

Для примера создайте простую таблицу:

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

Данная таблица описывает всё оборудование детской площадки. Таблица начинается со столбца ID, который указывает порядковый номер записи. Этот столбец был ограничен по PRIMARY KEY, что значит, что значения должны быть уникальными и не должны быть нулём.

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

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

Просмотреть таблицу можно при помощи команды:

\d
List of relations
Schema | Name | Type | Owner
-------+-------------------------+----------+-------
public | playground | table | 8host
public | playground_equip_id_seq | sequence | 8host
(2 rows)

playground_equip_id_seq имеет тип данных sequence. Это представление типа данных serial, установленного для столбца equip_id. Этот тип определяет следующий номер в последовательности.

Чтобы просмотреть таблицу вне этого типа данных, введите:

\dt
List of relations
Schema | Name | Type | Owner
-------+------------+-------+-------
public | playground | table | 8host
(1 row)

8: Добавление, запрос и удаление данных

Теперь попробуйте добавить в таблицу данные.

Для этого нужно вызвать целевую таблицу, назвать столбцы и ввести данные, которые нужно добавить. К примеру, чтобы добавить горку (slide) и качели (swing), нужно ввести:

Добавляя данные в таблицу, помните:

  • Имя таблицы не нужно брать в кавычки.
  • Значения столбцов необходимо взять в кавычки.
  • В столбец equip_id не нужно добавлять данные; его значения генерируются автоматически.

Просмотрите добавленные данные:

Как видите, столбец equip_id был заполнен автоматически. Чтобы удалить значение (к примеру, slide), используйте команду:

DELETE FROM playground WHERE type = 'slide';

Теперь значения slide нет в таблице.

9: Добавление и удаление столбцов

PostgreSQL позволяет изменять количество столбцов таблицы после её создания.

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

ALTER TABLE playground ADD last_maint date;

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

Удалить столбец также можно с помощью одной команды. Например, чтобы удалить столбец last_maint, введите:

ALTER TABLE playground DROP last_maint;

Это удаляет столбец last_maint и все найденные в нем значения, но оставляет все другие данные без изменений.

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

Существующие записи в таблице можно редактировать.

Чтобы обновить значение записи, нужно запросить эту запись и указать столбец, значение которого нужно изменить. Для примера попробуйте обновить значение записи swing; замените yellow в столбце color новым значением (например, red).

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

Просмотрите таблицу, чтобы убедиться, что данные обновились:

Как видите, значение было успешно обновлено на red.

Заключение

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

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

Мы также изучим основы администрирования баз данных PostgreSQL.

Подготовка

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

Установка PostgreSQL на CentOS 8

На момент написания этой статьи для установки из стандартных репозиториев CentOS доступны две версии сервера PostgreSQL: версия 9.6 и 10.0.

Чтобы вывести список доступных потоков модуля PostgreSQL, введите:

Выходные данные показывают, что модуль postgresql доступен с двумя потоками. Каждый поток имеет два профиля: серверный и клиентский. По умолчанию используется поток 10 с сервером профилей:

Чтобы установить поток по умолчанию, введите сервер PostgreSQL версии 10.0:

Чтобы установить сервер PostgreSQL версии 9.6, введите:

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

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

Запустите службу PostgreSQL и включите ее запуск при загрузке:

Используйте инструмент psql , чтобы проверить установку, подключившись к серверу базы данных PostgreSQL и распечатав его версию :

Роли и методы аутентификации PostgreSQL

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

PostgreSQL поддерживает несколько методов аутентификации . Наиболее часто используемые методы:

Аутентификация клиента PostgreSQL определяется в файле конфигурации с именем pg_hba.conf . По умолчанию для локальных подключений PostgreSQL настроен на использование метода одноранговой аутентификации.

Пользователь postgres создается автоматически при установке сервера PostgreSQL. Этот пользователь является суперпользователем для экземпляра PostgreSQL. Он эквивалентен пользователю root MySQL.

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

Отсюда вы можете взаимодействовать с экземпляром PostgreSQL. Чтобы выйти из оболочки PostgreSQL, введите:

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

Обычно пользователь postgres используется только с локального хоста.

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

Только суперпользователи и роли с привилегией CREATEROLE могут создавать новые роли.

В следующем примере мы создадим новую роль с именем john , базу данных с именем johndb и предоставим привилегии для этой базы данных.

Сначала подключитесь к оболочке PostgreSQL:

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

Создайте новую базу данных:

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

Включить удаленный доступ к серверу PostgreSQL

По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс 127.0.0.1 .

Чтобы включить удаленный доступ к вашему серверу PostgreSQL, откройте файл конфигурации:

Прокрутите вниз до раздела CONNECTIONS AND AUTHENTICATION и добавьте / отредактируйте следующую строку:

Сохраните файл и перезапустите службу PostgreSQL с помощью:

Проверьте изменения с помощью утилиты ss :

Приведенный выше вывод показывает, что сервер PostgreSQL прослушивает порт по умолчанию на всех интерфейсах (0.0.0.0).

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

Выводы

CentOS 8 предоставляет две версии PostgreSQL: 9.6 и 10.0.

Для получения дополнительной информации по этой теме посетите документацию PostgreSQL.

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

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

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

Следуя указаниям этого руководства, вы установите последнюю версию PostgreSQL на сервер CentOS 8.

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

Для выполнения этого обучающего руководства вам потребуется сервер на базе CentOS 8. Этот сервер должен иметь пользователя non-root user с административными правами, а также брандмауэр, настроенный с помощью firewalld . Чтобы выполнить настройку сервера, воспользуйтесь руководством по начальной настройке сервера CentOS 8.

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

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

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

В первую очередь просмотрите список доступных потоков для модуля postgresql с помощью команды dnf :

В этом выводе вы можете видеть все три версии PostgreSQL из репозитория AppStream: 9.6 , 10 и 12 . Поток, который предоставляет Postgres версии 10, является потоком по умолчанию, о чем сигнализирует [d] в его конце. Если вы хотите установить эту версию, запустите sudo dnf install postgresql-server и перейдите к следующему шагу. Однако, хотя версия 10 до сих пор поддерживается, в этом обучающем руководстве мы будем устанавливать версию 12, последний релиз на момент написания.

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

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

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

Чтобы активировать поток модуля версии 12, вы можете установить пакет postgresql-server для установки PostgreSQL 12 и всех зависимостей:

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

После установки программного обеспечения мы выполним ряд шагов инициализации для подготовки нового кластера базы данных для PostgreSQL.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Закройте командную строку PostgreSQL с помощью следующей команды:

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

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

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

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

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

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

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

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

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

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

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

Вы можете получить дополнительный контроль с помощью дополнительных флагов. Посмотрите возможные варианты на странице man для createuser :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В результате мы получаем следующий вывод:

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

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

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

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

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

Базовый синтаксис этой команды выглядит следующим образом:

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

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

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

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

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

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

В результате мы получаем следующий вывод:

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

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

В результате вы получите следующее:

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

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

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

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

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

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

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

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

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

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

Запросите таблицу еще раз:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как видите, ваша горка теперь имеет красный цвет .

Заключение

Вы успешно настроили PostgreSQL на вашем сервере CentOS 8. Однако вам еще очень многое предстоит узнать о Postgres. Ниже вы найдете несколько руководств по использованию Postgres:

Настройка и установка PostgreSQL на CentOS 8 с созданием роли и удаленным подключением

PostgreSQL - это реляционная база данных, которая распространяется свободно (бесплатная) с открытым исходным кодом. По популярности находится на 4-ом месте. В этой статье будет рассмотрены способы установки базы данных на CentOS 8 или RHEL 8, но и на предыдущих версиях установка будет аналогичной. Мы так же рассмотрим возможность создание первой базы, добавления в нее данных и другие настройки через шелл.

Навигация по посту

Установка

Вы можете установить сервер баз данных PostgreSQL из официального репозитория и из репозитория CentOS. Единственное различие в этих двух способах в том, что в официальном репозитории PostgreSQL будет более новая версия.

Сама установка делится на 2 пакета:

  • postgresql-server - сервер базы данных;
  • postgresql-contrib - дополнительные инструменты для работы с базами данных. Например для анализа или администрирования. Не входят в основной пакет, так как считается, что он нужен не всем. Пакет поддерживается теми же разработчиками, что и сервер. Устанавливать не обязательно, но рекомендуется.

С помощью репозитория CentOS

Установка пакетов выполняется следующей командой:

Установка PostgreSQL из репозитория CentOS

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

Инициализация PostgreSQL на CentOS

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

Включение сервиса PostgreSQL на CentOS

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

  • Failed to start postgresql.service: Unit postgresql.service not found;
  • Failed to enable unit: Unit file postgresql.service does not exist.

О том что сервис включен говорят следующие значения:

Проверка работы сервиса PostgreSQL на CentOS

Для проверки корректной установки так же можно запустить команду, которая подключится к серверу PostgreSQL и вернет его версию, для проверки корректной установки:

Запрос версии PostgreSQL на CentOS

Вы можете получить следующую ошибку:

  • could not change directory to “/home/user”: Permission denied

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

Как можно увидеть в примере выше, то из репозитория CentOS была доступна только 10 версия PostgreSQL. Если добавить в вашу ОС ссылку на официальный репозиторий PostgreSQL, то, скорее всего, у нас станет доступна более новая версия. На момент написания статьи, самая последняя актуальная версия PostgreSQL - 12. Вы можете проверить последнюю версию на официальном сайте проекта.

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

Установка сервера PostgreSQL 12 на CentOS

Установим сервер базы данных и пакет приложений:

Создадим системные базы и таблицы:

Инициализация PostgreSQL 12 на CentOS

Запустим и включим демон, что бы после перезагрузки он это делал автоматически:

Запуск демона PostgreSQL 12 на CentOS

О том что демон включен и работает говорят следующие значения:

Проверка демона PostgreSQL 12 на CentOS

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

Проверка работы PostgreSQL 12 на CentOS

Создание ролей и пользователей

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

Смена пароля пользователя postgres на CentOS

Далее переключимся на пользователя postgres и установим ему пароль "Password123":

Смена пользователя на postgres в CentOS

Создание пользователя и роли базы данных

Ранее, PostgreSQL, имела концепцию пользователей и групп. Пользователи входили в группы, а на группы распространялись права. Эта концепция была изменена на роли и теперь, вне зависимости от того что вы хотите создать, вы создаете их. Роль может входить в другую роль и наследовать эти права. Каждая роль так же может быть с правом подключения к серверу "Login" и без него. Если вам будет легче, то вы можете воспринимать роль следующим образом:

  • Пользователь - это роль с правом подключения "Login";
  • Группа - это роль без права подключения.

Эти роли можно создавать через консоль psql в формате SQL запросов. По умолчанию, если не указывать для psql пользователя, сверяется локальный с тем, что есть в базах. Как уже говорилось - единственным созданным пользователем является posgres. Подключимся через него:

Запуск консоли psql PostgreSQL 12 на CentOS

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

Создание роли на PostgreSQL с Login на CentOS

Как можно увидеть - у пользователя postgres есть поле атрибутов, которое определяет его права. Сами же атрибуты тоже являются наборами прав. Выделю 3 типа атрибутов, которые в основном используются:

  • Superuser - все возможные права;
  • Create role - создание ролей (без прав superuser);
  • Create DB - создание баз.

Так как роль, которая создала объект, может распоряжаться им полностью - дадим такое право созданному пользователю. Отмечу, что название атрибутов пишутся без пробелов:

Выдача прав роли в PostgreSQL

Все указанные выше команды можно поместить в одну:

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

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

  • psql: error: could not connect to server: FATAL: Peer authentication failed for user

Создание базы и выдача прав на объект

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

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

Смена владельца базы в PostgreSQL на CentOS

Выйти из консоли можно использовав:

Настройка удаленного подключения к базе

PostgreSQL может использовать множество протоколов аутентификации. Самые распространенные способы:

  • Trust - можно подключаться без использования пароля;
  • Password - подключение только используя пароль;
  • Ident - возможность удаленного подключение с именем и паролем;
  • Peer - только локальное подключение.

Для 10-ой версии, установленной из репозитория CentOS путь следующий:

Настройка подключения для PostgreSQL в файле postgresql.conf на CentOS

Настройка сетевого доступа для пользователя PostgreSQL в файле pg_hba.conf

На примере выше я добавил 78 и 79 строчку, которая строится по следующему характеру:

Далее сохраняем файл и перезагружаем сервис:

Правила фаерволла

Подключение и возможные проблемы

Подключится мы можем используя клиент psql, IDE, модули и т.д. В случае psql, для типа аутентификации MD5, подойдет такая команда:

  • -h - указывает на хост к которому я подключаюсь. Если вы делаете это локально, то указывать не нужно;
  • -U - имя пользователя под которым выполняется подключение;
  • template1 - это база данных к которой нужно подключиться;
  • -W - запрашивает пароль.

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

pgAdmin - это расширенный полнофункциональный веб-инструмент для администрирования и управления сервером баз данных PostgreSQL с открытым исходным кодом.

В этой статье вы узнаете, как установить сервер базы данных PostgreSQL 12 и pgAdmin 4 в дистрибутив CentOS 8 Linux.

Шаг 1. Установка PostgreSQL на CentOS 8

1. Сначала отключите встроенный модуль PostgreSQL, выполнив следующую команду dnf.

2. Затем включите официальный репозиторий PostgreSQL Yum, как показано.

3. Затем установите серверные и клиентские пакеты PostgreSQL 12.


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


Шаг 2: защита и настройка базы данных PostgreSQL

5. Затем защитите учетную запись пользователя Postgres и учетную запись администратора базы данных. Начните с создания пароля для учетной записи пользователя системы Postgres с помощью утилиты passwd, как показано.


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


7. Теперь настройте, как сервер Postgres будет аутентифицировать клиентов, таких как pgAdmin. Поддерживаемые методы аутентификации включают аутентификацию на основе пароля, в которой используется один из следующих методов: md5, crypt или пароль.

В этом руководстве мы настроим метод аутентификации md5 в файле /var/lib/pgsql/12/data/pg_hba.conf.

Найдите следующие строки и измените метод аутентификации на md5, как показано на снимке экрана.


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

Шаг 3: Установка pgAdmin4 в CentOS 8

9. Теперь мы установим pgAdmin 4 для управления базой данных PostgreSQL из Интернета. Во-первых, вам нужно включить репозитории EPEL и pgAdmin Yum, которые содержат некоторые зависимости.

в Fedora Linux запустите:

10. Затем вам необходимо удалить официальные репозитории yum PostgreSQL, чтобы установить последнюю стабильную версию pgAdmin из официального репозитория yum pgAdmin.

11. Теперь создайте кеш для вновь установленных репозиториев pgAdmin и EPEL и установите pgAdmin, используя следующие команды.

Шаг 4: Настройка pgAdmin 4 в CentOS 8

13. Пакет pgadmin4 поставляется с настраиваемым сценарием для настройки веб-службы pgAdmin, который создает учетную запись пользователя, используемую для аутентификации в веб-интерфейсе, настраивает политики SELinux и веб-сервер Apache для развертывания веб-службы pgAdmin.

Шаг 5. Доступ к веб-интерфейсу pgAdmin

15. Чтобы получить доступ к веб-интерфейсу pgAdmin, откройте браузер и перейдите по следующему URL-адресу.

После загрузки интерфейса входа используйте адрес электронной почты и пароль, которые вы создали на шаге 15 выше, чтобы войти в систему.


16. Затем добавьте новое соединение с сервером, нажав «Добавить новый сервер».


17. Затем на вкладке «Общие» введите следующие настройки Имя сервера и, при желании, оставьте комментарий для описания соединения.


18. Затем определите профиль подключения, заполнив следующие данные:

  • Хост - хост/IP-адрес сервера PostgreSQL.
  • Порт - по умолчанию 5432.
  • База данных обслуживания - по умолчанию должен быть Postgres.
  • Имя пользователя - имя пользователя базы данных. Вы можете использовать Postgres.
  • Пароль - пароль для указанного выше пользователя.

Затем нажмите «Сохранить».


19. Новый сервер должен появиться под списком серверов, как показано на следующем снимке экрана.


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


Вот оно что! Вы успешно установили Postgresql 12 и pgAdmin 4 в CentOS 8. С любыми мыслями и вопросами обращайтесь к нам через форму обратной связи ниже. Дополнительную информацию можно найти в документации pgAdmin.

Читайте также: