PostgreSQL или Postgres — это универсальная объектно-реляционная система управления базами данных с открытым исходным кодом со многими расширенными функциями, которая позволяет создавать сложные веб-приложения.
В этом руководстве мы покажем вам два разных метода установки 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 вместе с пакетом PostgreSQL contrib, который предоставляет несколько дополнительных функций для базы данных PostgreSQL, просто введите:
sudo yum install postgresql-server postgresql-contrib
-
Инициализация базы данных
Инициализируйте базу данных PostgreSQL с помощью следующей команды:
sudo postgresql-setup initdb
Initializing database ... OK
-
Запуск PostgreSQL
Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, просто введите:
sudo systemctl start postgresql
sudo systemctl enable postgresql
-
Проверка установки PostgreSQL
Чтобы проверить установку, мы попытаемся подключиться к серверу базы данных PostgreSQL с помощью инструмента
psql
и распечатать версию сервера :sudo -u postgres psql -c "SELECT version();"
PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
Установите PostgreSQL из репозиториев PostgreSQL
На момент написания этой статьи последней версией PostgreSQL, доступной в официальных репозиториях PostgreSQL, была PostgreSQL версии 10.4. Прежде чем перейти к следующему шагу, вам следует посетить страницу PostgreSQL Yum Repository и проверить, доступна ли новая версия.
Выполните следующие действия, чтобы установить последнюю версию PostgreSQL на свой сервер CentOS:
-
Включение репозитория PostgreSQL
Чтобы включить репозиторий PostgreSQL, просто установите
rpm
файл репозитория:sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
-
Установка PostgreSQL
После включения репозитория установите сервер PostgreSQL и пакеты Contrib PostgreSQL с помощью:
sudo yum install postgresql10-server postgresql10-contrib
-
Инициализация базы данных
Чтобы инициализировать тип базы данных PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
-
Запуск PostgreSQL
Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, введите:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
-
Проверка установки PostgreSQL
Чтобы проверить установку, мы попытаемся подключиться к серверу базы данных PostgreSQL с помощью инструмента
psql
и распечатать версию сервера:sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)
Роли и методы аутентификации PostgreSQL
Разрешения на доступ к базе данных в PostgreSQL обрабатываются с помощью концепции ролей. Роль может представлять пользователя базы данных или группу пользователей базы данных.
PostgreSQL поддерживает несколько методов аутентификации . Наиболее часто используемые методы:
- Доверие — с помощью этого метода роль может подключаться без пароля, если соблюдаются критерии, определенные в
pg_hba.conf
. - Пароль — роль может подключиться, указав пароль. Пароли могут быть сохранены как
scram-sha-256
md5
иpassword
(открытый текст). - Ident — этот метод поддерживается только для соединений TCP / IP. Он работает путем получения имени пользователя операционной системы клиента с дополнительным отображением имени пользователя.
- Peer — То же, что и Ident, но поддерживается только для локальных подключений.
Аутентификация клиента PostgreSQL определяется в файле конфигурации с именем pg_hba.conf
. По умолчанию для локальных подключений PostgreSQL настроен на использование метода одноранговой аутентификации.
Пользователь postgres
создается автоматически при установке PostgreSQL. Этот пользователь является суперпользователем для экземпляра PostgreSQL и эквивалентен корневому пользователю MySQL.
Чтобы войти на сервер PostgreSQL в качестве пользователя postgres, сначала вам нужно переключиться на пользователя postgres, а затем получить доступ к приглашению PostgreSQL с помощью утилиты psql
:
sudo su - postgres
psql
Отсюда вы можете взаимодействовать со своим экземпляром PostgreSQL. Чтобы выйти из оболочки PostgreSQL, введите:
q
Вы также можете получить доступ к командной строке PostgreSQL, не переключая пользователей, с помощью команды sudo
:
sudo -u postgres psql
Пользователь postgres
обычно используется только с локального хоста, и не рекомендуется устанавливать пароль для этого пользователя.
psql
есть /usr/pgsql-10/bin/psql
.Создание роли и базы данных PostgreSQL
Только суперпользователи и роли с привилегией CREATEROLE
могут создавать новые роли.
В следующем примере мы создадим новую роль с именем john
в базе данных с именем johndb
и предоставим привилегии для этой базы данных.
-
Подключиться к оболочке PostgreSQL
sudo -u postgres psql
-
Создайте новую роль PostgreSQL
Следующая команда создаст новую роль с именем john:
create role john ;
-
Создайте новую базу данных PostgreSQL
Создайте новую базу данных с именем johndb с помощью команды
createdb
:create database johndb ;
-
Предоставлять привилегии
Чтобы предоставить разрешения пользователю
john
в базе данных, созданной на предыдущем шаге, выполните следующий запрос:grant all privileges on database johndb to john ;
Включить удаленный доступ к серверу PostgreSQL
По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс 127.0.0.1
. Чтобы включить удаленный доступ к серверу PostgreSQL, откройте файл конфигурации postgresql.conf
и добавьте listen_addresses = '*'
в раздел CONNECTIONS AND AUTHENTICATION
.
sudo vim /var/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/10/data/postgresql.conf
.#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
сохраните файл и перезапустите службу PostgreSQL с помощью:
sudo systemctl restart postgresql
systemctl restart postgresql-10
.Проверьте изменения с помощью утилиты ss
:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Как видно из выходных данных выше, сервер PostgreSQL прослушивает все интерфейсы (0.0.0.0).
Последний шаг — настроить сервер на прием удаленных подключений путем редактирования файла pg_hba.conf
.
Ниже приведены несколько примеров, показывающих различные варианты использования:
# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
/var/lib/pgsql/10/data/pg_hba.conf
.Выводы
Вы узнали, как установить и настроить PostgreSQL на своем сервере CentOS 7.
Дополнительную информацию по этой теме см. В документации PostgreSQL .
Если у вас есть вопросы, оставьте комментарий ниже.