Настройка postgresql centos 7

Обновлено: 08.07.2024

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

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

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

Требования

  • Для работы вам нужен сервер CentOS 7, настроенный по этому мануалу.
  • Настроенный брандмауэр. Инструкции вы найдете в мануале Дополнительные рекомендации по настройке сервера CentOS 7.
  • Базы данных могут быть особенно уязвимы к изменениям системного времени, если они очень активны и поддерживают временные метки во внутренних записях. Чтобы предотвратить конфликты, которые могут возникнуть из-за несинхронизированных часов, обязательно настройте поддержку сетевого протокола времени (NTP), следуя специальному разделу в мануале Дополнительные рекомендации по настройке сервера CentOS 7.

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

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

Прежде чем перейти к настройке нового репозитория, исключите поиск пакетов postgresql из репозитория CentOS-Base. В противном случае зависимости могут разрешиться на другую версию пакета.

Откройте конфигурационный файл репозитория с помощью текстового редактора, например, vim:

sudo vi /etc/yum.repos.d/CentOS-Base.repo

Найдите разделы [base] и [updates], перейдите в режим вставки, нажав i, и вставьте строку exclude=postgresql* в оба раздела. В результате файл будет выглядеть следующим образом:

Когда вы закончите, нажмите ESC, чтобы выйти из режима вставки, затем :wq и Enter, чтобы сохранить и закрыть файл.

Теперь установите пакет конфигурации репозитория, используйте для этого официальный репозиторий PostgreSQL для CentOS:

Подтвердите установку, нажав у.

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

yum list postgresql*

Выберите и установите нужную версию PostgreSQL. В этом мануале мы используем релиз PostgreSQL 11.

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

sudo yum install postgresql11-server

В процессе установки вам будет предложено импортировать ключ GPG:

.
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package : pgdg-redhat-repo-42.0-5.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Is this ok [y/N]:

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

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

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

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

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

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

sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

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

Initializing database . OK

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

sudo systemctl start postgresql-11
sudo systemctl enable postgresql-11

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

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

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

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

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

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

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

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

Чтобы перейти в сессию пользователя 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 -i -u 8host
psql

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

sudo -u 8host psql

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

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

psql -d postgres

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

\conninfo
You are connected to database "8host" as user "8host" 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)
);

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

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

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

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

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

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

ALTER TABLE playground ADD last_maint date;

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

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

ALTER TABLE playground DROP last_maint;

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

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

Записи в таблице можно редактировать.

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

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

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

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

Заключение

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

Если все нормально должны увидеть что postgres запущен.


Настройка

Сейчас в вашей СУБД есть только один пользователь — postgres. Рекомендуется не использовать данного пользователя для работы со своими базами данных, а создавать для каждой базы отдельного пользователя (или несколько при необходимости).
Задаем пароль на пользователя postgres


Подключаемся к серверу postgres


Создаем нового пользователя

Вместо username и password подставьте свои имя пользователя и пароль.

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

Редактируем файл postgresql.conf.

Для начала разрешим подключение к СУБД из локальной сети (по умолчанию подключение разрешено только с localhost).
Раскомментируем строку



Теперь разрешим подключение из локальной сети с любых хостов и к любым БД, для этого в конец файла pg_hba.conf добавим:

PostgreSQL 11

Установка

Запускаем сервер и проверяем что все нормально


Настройка

Первоначальные настройки пользователей и доступа к СУБД аналогичны рассмотренным выше. Только конфигурационные файлы находятся в директории /var/lib/pgsql/11/data/. После внесения изменений не забудьте перезапустить postgres командой

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Установка Postgresql CentOS

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


В CentOS 6 команда будет выглядеть вот так:

После того как репозиторий будет добавлен к вашей системе вы можете перейти к установке программы. На данный момент последняя версия Postgresql 9.6. Именно для нее мы добавили репозиторий. Возможно, для более новых версий вам придется посетить сайт и посмотреть не появилась ли новая версия. Установка Postgresql CentOS 7 версии 9.6 выполняется командой:

sudo yum install postgresql96-server postgresql96


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


Команде потребуется некоторое время для начальной инициализации. После ее завершения в переменной PGDATA будет сохранен путь к папке с базами данных. В моем случае это /var/lib/pgsql/9.5/data/.

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

sudo systemctl start postgresql-9.6
$ sudo systemctl enable postgresql-9.6


Настройка Postgresql CentOS 7

Теперь сервер баз данных Postgresql установлен и запущен. Нам осталось проверить как все работает, настроить пользователей и свою первую базу данных. Настройка Postgresql CentOS 7 изначально выполняется только от пользователя postgres поэтому переключаемся на этого пользователя с помощью команды su:

sudo su - postgres


Команда выполняется от имени администратора, потому что иначе у вас спросят пароль, а вы его не знаете. Для доступа к консоли Postgresql будем применять команду psql:


Смотрим информацию о подключении:

Первое что здесь можно сделать, это создать пароль для postgres:


Дальше закройте оболочку командой:

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


Дальше нужно ввести имя роли и ответить на несколько вопросов, а также повторить процедуру задания пароля как для postgres. Чтобы вы могли использовать postgresql через терминал от имени этого пользователя добавьте пользователя UNIX:

sudo adduser user

Нам осталось только создать новую базу данных:

Теперь у вас есть все необходимое для полноценной работы с программой.

Установка Phppgadmin CentOS 7

Не очень удобно работать с консольным интерфейсом управления базами данных. Иногда нужно просто и быстро добавить базу данных или создать пользователя. Для этого можно использовать веб-интерфейс phppgadmin. Для установки программы выполните:

sudo yum install phpPgAdmin


Также нужно, чтобы на вашей машине был установлен и запущен веб-сервер Apache. Чтобы перезапустить Apache выполните:

После завершения установки вы сможете открыть адрес phpPgAdmin в браузере. Только обратите внимание на регистр букв, его нужно сохранять как при установке пакета, так и в браузере:


Выводы

В этой статье мы рассмотрели как выполняется установка Postgresql CentOS 7. Как видите, здесь нет ничего очень сложного. Postgresql имеет некоторые особенности, например, авторизация пользователя в системе для управления базой данных. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение видео о про преимущества Postgresql:

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

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

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

Подготовка

Прежде чем продолжить это руководство, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .

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

На момент написания этой статьи последней версией PostgreSQL, доступной в репозиториях CentOS, была PostgreSQL версии 9.2.23.

Чтобы установить PostgreSQL на ваш сервер CentOS, выполните следующие действия:

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

Инициализация базы данных

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

Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, просто введите:

Проверка установки PostgreSQL

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

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

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

Выполните следующие действия, чтобы установить последнюю версию PostgreSQL на свой сервер CentOS:

Включение репозитория PostgreSQL

Чтобы включить репозиторий PostgreSQL, просто установите rpm файл репозитория:

После включения репозитория установите сервер PostgreSQL и пакеты Contrib PostgreSQL с помощью:

Инициализация базы данных

Чтобы инициализировать тип базы данных PostgreSQL:

Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, введите:

Проверка установки PostgreSQL

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

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

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

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

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

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

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

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

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

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

Если вы установили PostgreSQL версии 10 из официальных репозиториев PostgreSQL, вам нужно будет использовать полный путь к двоичному файлу psql есть /usr/pgsql-10/bin/psql .

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

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

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

Подключиться к оболочке PostgreSQL

Создайте новую роль PostgreSQL

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

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

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

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

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

Если вы используете PostgreSQL версии 10, путь к файлу будет /var/lib/pgsql/10/data/postgresql.conf .

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

Если вы используете PostgreSQL версии 10, перезапустите службу PostgreSQL с помощью systemctl restart postgresql-10 .

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

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

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

Выводы

Вы узнали, как установить и настроить PostgreSQL на своем сервере CentOS 7.

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