PostgreSQL или Postgres — это система управления объектно-реляционными базами данных общего назначения с открытым исходным кодом, обладающая множеством расширенных функций, которая позволяет создавать отказоустойчивые среды или сложные приложения.
В этой статье мы расскажем, как установить сервер баз данных PostgreSQL в Ubuntu 20.04, и исследуем основы администрирования баз данных PostgreSQL.
Предпосылки
Чтобы иметь возможность устанавливать пакеты, вам необходимо войти в систему как пользователь root или пользователь с привилегиями sudo.
Установка PostgreSQL в Ubuntu
На момент написания этой статьи последняя версия PostgreSQL, доступная в официальных репозиториях Ubuntu, — это PostgreSQL версии 10.4.
Выполните следующие команды для установки сервера PostgreSQL в Ubuntu:
sudo apt update sudo apt install postgresql postgresql-contrib
Мы также устанавим пакет PostgreSQL contrib, который предоставляет несколько дополнительных функций для системы баз данных PostgreSQL.
После завершения установки служба PostgreSQL запустится автоматически. Используйте инструмент psql для проверки установки, подключившись к серверу базы данных PostgreSQL и распечатав его версию:
sudo -u postgres psql -c "SELECT version();"
PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit
Вот и все. 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, сначала переключитесь на пользователя, а затем получите доступ к приглашению PostgreSQL с помощью утилиты psql:
sudo su - postgrespsql
Отсюда вы можете взаимодействовать с вашим экземпляром PostgreSQL. Для выхода из оболочки PostgreSQL введите:
\q
Другой способ получить доступ к приглашению PostgreSQL без переключения пользователей — использовать команду sudo:
sudo -u postgres psql
Как правило, вы должны войти на сервер базы данных postgres только с локального хоста.
Создание роли и базы данных PostgreSQL
Только суперпользователи и роли с привилегиями CREATEROLE могут создавать новые роли.
В следующем примере показано, как создать новую роль с именем andreyex, базы данных andreyexdb и предоставить ей привилегии:
- Создайте новую роль PostgreSQL:
sudo su - postgres -c "createuser andreyex"
- Создайте новую базу данных PostgreSQL:
sudo su - postgres -c "createdb andreyexdb"
Чтобы предоставить разрешения пользователю в базе данных, подключитесь к оболочке PostgreSQL:
sudo -u postgres psql
и выполните следующий запрос:
grant all privileges on database andreyexdb to andreyex;
Включение удаленного доступа к серверу PostgreSQL
По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс ( 127.0.0.1).
Чтобы включить удаленный доступ к вашему серверу PostgreSQL, откройте файл конфигурации postgresql.conf и добавьте listen_addresses = ‘*’ в раздел CONNECTIONS AND AUTHENTICATION.
sudo nano /etc/postgresql/12/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
Вывод показывает, что сервер PostgreSQL прослушивает все интерфейсы ( 0.0.0.0):
LISTEN 0 244 0.0.0.0:5432 0.0.0.0:* LISTEN 0 244 [::]:5432 [::]:*
Следующим шагом является настройка сервера на прием удаленных подключений путем редактирования файла pg_hba.conf.
Ниже приведены примеры, показывающие различные варианты использования:
# TYPE DATABASE USER ADDRESS METHOD # The user jane can access all databases from all locations using md5 password host all jane 0.0.0.0/0 md5 # The user jane can access only the janedb from all locations using md5 password host janedb jane 0.0.0.0/0 md5 # The user jane can access all databases from a trusted location (192.168.1.134) without a password host all jane 192.168.1.134 trust
Последний шаг — открыть порт 5432 в брандмауэре.
Предполагая, что вы используете UFW для управления брандмауэром и хотите разрешить доступ из подсети 192.168.1.0/24, вы должны выполнить следующую команду:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Убедитесь, что ваш брандмауэр настроен на прием соединений только из доверенных диапазонов IP-адресов.
Вывод
Мы показали вам, как установить и настроить PostgreSQL на сервере Ubuntu 20.04.
Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.