
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, который предоставляет несколько дополнительных функций для базы данных PostgreSQL, просто введите:
sudo yum install postgresql-server postgresql-contrib -
Инициализация базы данных
Инициализируйте базу данных PostgreSQL с помощью следующей команды:
sudo postgresql-setup initdbInitializing database ... OK -
Запуск PostgreSQL
Чтобы запустить службу PostgreSQL и включить ее запуск при загрузке, просто введите:
sudo systemctl start postgresqlsudo 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)
Psql — это интерактивная утилита командной строки, которая позволяет нам взаимодействовать с сервером PostgreSQL.
Установить PostgreSQL из репозиториев PostgreSQL
На момент написания этой статьи последней версией PostgreSQL, доступной в официальных репозиториях PostgreSQL, является PostgreSQL версии 10.4. Прежде чем перейти к следующему шагу, посетите страницу репозитория PostgreSQL Yum и проверьте наличие новой версии.
Чтобы установить последнюю версию 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 и дополнительные пакеты PostgreSQL с помощью:
sudo yum install postgresql10-server postgresql10-contrib -
Инициализация базы данных
Для инициализации типа базы данных PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdbInitializing database ... OK -
Запуск PostgreSQL
Чтобы запустить службу PostgreSQL и включить ее запуск при загрузке, введите:
sudo systemctl start postgresql-10sudo 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-256md5иpassword(открытым текстом). - Ident — этот метод поддерживается только для соединений TCP/IP. Он работает путём получения имени пользователя операционной системы клиента с возможностью сопоставления имени пользователя.
- Peer — то же, что и Ident, но поддерживается только для локальных подключений.
Аутентификация клиента PostgreSQL определяется в файле конфигурации pg_hba.conf . По умолчанию для локальных подключений PostgreSQL использует метод аутентификации на основе одноранговой сети.
Пользователь postgres создаётся автоматически при установке PostgreSQL. Он является суперпользователем для экземпляра PostgreSQL и эквивалентен пользователю root в MySQL.
Чтобы войти на сервер PostgreSQL как пользователь postgres, вам сначала нужно переключиться на пользователя postgres, а затем получить доступ к командной строке PostgreSQL с помощью утилиты psql :
sudo su - postgrespsql
Отсюда вы можете взаимодействовать с вашим экземпляром PostgreSQL. Чтобы выйти из оболочки PostgreSQL, введите:
q
Вы также можете получить доступ к командной строке PostgreSQL без смены пользователя, используя команду sudo :
sudo -u postgres psql
Пользователь postgres обычно используется только с локального хоста, и рекомендуется не устанавливать пароль для этого пользователя.
Если вы установили PostgreSQL версии 10 из официальных репозиториев PostgreSQL, вам нужно будет использовать полный путь к двоичному файлу 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
Если вы используете PostgreSQL версии 10, путь к файлу будет /var/lib/pgsql/10/data/postgresql.conf ./var/lib/pgsql/data/postgresql.conf
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on;
сохраните файл и перезапустите службу PostgreSQL с помощью:
sudo systemctl restart postgresql
Если вы используете PostgreSQL версии 10, перезапустите службу 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 .
Ниже приведены несколько примеров, демонстрирующих различные варианты использования:
/var/lib/pgsql/data/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
Если вы используете PostgreSQL версии 10, полный путь к файлу — /var/lib/pgsql/10/data/pg_hba.conf .
Заключение
Вы узнали, как установить и настроить PostgreSQL на сервере CentOS 7.
Более подробную информацию по этой теме можно найти в документации PostgreSQL .
Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.
База данных centos postgresql Не используете CentOS 7?
Выберите другую ОС: центос 8 дебиан 10 дебиан 9 убунту 18.04 убунту 20.04
Связанные руководства