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

Обновлено: 07.07.2024

В этом руководстве мы обсудим, как установить сервер базы данных 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:

date

11.10.2019

directory

CentOS, Linux

comments

Один комментарий

В данной статье мы проведем установку СУБД PostgreSQL 11 в Linux CentOS 7, выполним базовую настройку сервера и СУБД, рассмотрим основные параметры конфигурационного файла, а так же способы тюнинга производительности. PostgreSQL – популярная свободная объектно-реляционная система управления базами данных. Не смотря на то, что она не так распространена как MySQL/MariDB, она является самой профессиональной.

Сильные стороны PostgreSQL:

  • Полное соответствие стандартам SQL;
  • Высокая производительность за счет управления многовариантным параллелизмом (MVCC);
  • Масштабируемость (широко используется в высоконагруженных средах);
  • Поддержка множества языков программирования;
  • Надёжные механизмы транзакций и репликации;
  • Поддержка данных в формате JSON.

Установка PostgreSQL в CentOS/RHEL

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

Первым шагом устанавливаем репозиторий PosgreSQL (на данный момент он устанавливается следующим образом):

В данном репозитории есть как самые новые версии PostgreSQL, так и более старые версии. Информация о репозитории выглядит следующим образом:

подключение репозитория PosgreSQL

Установим последнюю доступную версию версию (PostrgeSQL 11) c помощью yum.

yum install postgresql11-server -y

В процессе установки устаналивается сам сервере PostgreSQL и необходимые библотеки:

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

Так же сразу добавим сервер БД в автозагрузку и запустим его:

systemctl enable postgresql-11

systemctl start postgresql-11

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

Если вам нужен доступ к PostgreSQL снаружи, вам нужно открыть порт TCP/5432, в стандартном firewall в Centos 7:

Если включен SELinux, выполните:

Подключение к PostgreSQL, создание БД, пользователя

По умолчанию при установке PostgreSQL в системе есть один пользователь —postgres.

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

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

Открылась консоль PostgreSQL. Покажем несколько простых примеров управления PostgreSQL из консоли psql.

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

ALTER ROLE postgres WITH PASSWORD 'super_str0ng_pa$$word';

Сразу создадим новую базу данных, пользователя и дадим ему полные права на эту БД:

Подключиться к БД:

Вывести список таблиц:

Вывести список запросов к базе:

Сбросить все подключения к базе:

Информацию о текущей сессии можно получить так:

Для завершения работой с консолью psql, выполните:

Как вы уже заметили, синтаксис не отличается от той же MariaDB или MySQL и поэтому особо останавливаться на однотипных командах мы не будем.

Отметим, что для более удобного управления базами PostgreSQL из веб-интерфейса рекомендуется использовать pgAdmin4 (написан на Python и Javascript/jQuery). Это аналог привычному многим веб разработчикам PhpMyAdmin.

pgAdmin4 веб интерфейс управления

Основные параметры конфигурационных файлов PostgreSQL

Файлы конфигурации postgresql находятся в директории /var/lib/pgsql/11/data:

  • postgresql.conf — непосредственно сам файл конфигурации postgresql;
  • pg_hba.conf — файл с настройками доступа. В данном файле, можно выставлять различные ограничения для пользователей, устанавливать политику подключения к БД;
  • pg_ident.conf — этот файл используется при идентификации клиентов по протоколу ident.

Чтобы запретить локальным пользователям вход в postgres без авторизации, в файле pg_hba.conf укажите:

Рассмотрим наиболее важные параметры в конфигурационном файле postgresql.conf:

Резевное копирование и восстановление БД в PostgreSQL

Создать резервную копию в PostgreSQL БД можно несколькими способами. Рассмотрим самый простой вариант.

Для начала проверим, какие БД запущены на сервере:

postgres - вывести список баз данных

У нас имеются 4 базы данных, 3 из которых системные (postgres и template).

Ранее мы создавали БД с именем “mydbtest”, на ее примере и выполним резервное копирование.

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

Чтобы восстановить указанный дамп в нужную БД, можно воспользоваться утилитой psql:

sudo -u postgres psql mydbtest < /root/dupm.sql

резервное копирование postgres с помощью psql

Так же можно создать бэкап в специальном формате дампа и сжатом с применением gzip:

sudo -u postgres pg_dump -Fc mydbtest > /root/dumptest.sql

sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql

Более расширенные настройки можно посмотреть в справке по данным утилитам:

man psql
man pg_dump
man pg_restore

Оптимизация и тюниг PostgreSQL

В предыдущей статье о MariaDB, мы показывали, как можно привести практически к идеалу параметры конфигурационного файла my.cnf с помощью тюнеров. Для PostgreSQL существует, хотя правильнее сказать существовала такая утилита как PgTun, но к сожалению она уже давно не обновляется. В тоже время есть масса онлайн сервисов, с помощью которых вы можете настроить оптимальную конфигурацию для вашего PostgreSQL. Мне нравится сервис pgtune.leopard.in.ua.

Интерфейс очень прост. Вам нужно указать параметры вашего сервера (профиль, процессоры, память, тип дисков) и нажать кнопку “Generate”. В результате вам будет предложен вариант конфигурационного файла postgresql.conf с рекомендуемыми значениями основных параметров СУБД.

Например, для VPS SSD сервера с 2 Гб оперативной памятью, 2 CPU для запуска нескольких сайтов рекомендуются следующие настройки в postgresql.conf:

pgtune для postgresql

И это на самом деле не единственный ресурс, на момент написания статьи, были достпны аналогичные сервисы:

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

Настройка и установка 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 - запрашивает пароль.

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