PostgreSQL, часто известный просто как Postgres, представляет собой универсальную объектно-реляционную систему управления базами данных с открытым исходным кодом. Он имеет множество мощных функций, таких как онлайн-резервное копирование, восстановление на определенный момент времени, вложенные транзакции, запросы SQL и JSON, управление многовариантным параллелизмом (MVCC), асинхронная репликация и многое другое.
Это руководство проведет вас по этапам установки сервера базы данных PostgreSQL в Debian 10. Мы также изучим основы базового администрирования баз данных.
Содержание
Установка PostgreSQL
На момент написания этой статьи последней версией PostgreSQL, доступной в репозиториях Debian по умолчанию, была PostgreSQL версии 11.5.
Чтобы установить PostgreSQL на ваш сервер Debian, выполните следующие действия от имени пользователя root или пользователя с привилегиями sudo :
-
Начните с обновления индекса пакета APT:
sudo apt update
-
Установите сервер PostgreSQL и пакет contrib, который предоставляет дополнительные функции для базы данных PostgreSQL:
sudo apt install postgresql postgresql-contrib
-
После завершения установки запустится служба PostgreSQL. Чтобы проверить установку, используйте инструмент
psql
для печати версии сервера :sudo -u postgres psql -c "SELECT version();"
Результат должен выглядеть примерно так:
PostgreSQL 11.5 (Debian 11.5-1+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
psql
— это интерактивная терминальная программа, которая позволяет вам взаимодействовать с сервером PostgreSQL.Роли и методы аутентификации PostgreSQL
PostgreSQL обрабатывает разрешения на доступ к базе данных, используя концепцию ролей. В зависимости от того, как вы настроили роль, она может представлять пользователя базы данных или группу пользователей базы данных.
PostgreSQL поддерживает несколько методов аутентификации . Наиболее часто используемые методы:
- Доверие — роль может подключаться без пароля, если соблюдаются критерии, определенные в
pg_hba.conf
. - Пароль — роль может подключиться, указав пароль. Пароли могут быть сохранены как
scram-sha-256
md5
иpassword
(открытый текст) - Идентификатор — поддерживается только для подключений TCP / IP. Он работает путем получения имени пользователя операционной системы клиента с дополнительным отображением имени пользователя.
- Peer — То же, что и Ident, но поддерживается только для локальных подключений.
Аутентификация клиента PostgreSQL определяется в файле конфигурации с именем pg_hba.conf
. Для локальных подключений PostgreSQL настроен на использование метода одноранговой аутентификации.
Пользователь «postgres» создается автоматически при установке PostgreSQL. Этот пользователь является суперпользователем для экземпляра PostgreSQL и эквивалентен пользователю root MySQL.
Чтобы войти на сервер PostgreSQL как «postgres», переключитесь на пользовательский postgres и получите доступ к приглашению PostgreSQL с помощью утилиты psql
:
sudo su - postgres
psql
Отсюда вы можете взаимодействовать с сервером PostgreSQL. Чтобы выйти из оболочки PostgreSQL, введите:
q
Вы можете использовать команду sudo
для доступа к приглашению PostgreSQL без переключения пользователей:
sudo -u postgres psql
Пользователь postgres
обычно используется только с локального хоста.
Создание роли и базы данных PostgreSQL
Команда createuser
позволяет создавать новые роли из командной строки. Только суперпользователи и роли с привилегией CREATEROLE
могут создавать новые роли.
В следующем примере мы создадим новую роль с именем kylo
, базу данных с именем kylodb
и предоставим этой роли права kylodb
к базе данных.
-
Сначала создайте роль, введя следующую команду:
sudo su - postgres -c "createuser kylo"
-
Затем создайте базу данных с помощью команды
createdb
:sudo su - postgres -c "createdb kylodb"
-
Чтобы предоставить пользователю права доступа к базе данных, подключитесь к оболочке PostgreSQL:
sudo -u postgres psql
Выполните следующий запрос:
grant all privileges on database kylodb to kylo ;
Включить удаленный доступ к серверу PostgreSQL
По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс 127.0.0.1
.
Если вы хотите подключиться к серверу PostgreSQL из удаленных мест, вам необходимо настроить сервер на прослушивание общедоступного интерфейса и отредактировать конфигурацию, чтобы принимать удаленные подключения.
Откройте файл конфигурации postgresql.conf
и добавьте listen_addresses = '*'
в раздел CONNECTIONS AND AUTHENTICATION
. Это дает серверу команду прослушивать все сетевые интерфейсы.
sudo nano /etc/postgresql/11/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Сохраните файл и перезапустите службу PostgreSQL, чтобы изменения вступили в силу:
sudo service postgresql restart
Проверьте изменения с помощью утилиты 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 an 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 an 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 в Debian 10. Для получения дополнительной информации по этой теме обратитесь к документации PostgreSQL .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.