
PostgreSQL или Postgres — это объектно-реляционная система управления базами данных общего назначения с открытым исходным кодом и множеством расширенных функций, позволяющая создавать отказоустойчивые среды или сложные приложения.
В этом руководстве мы объясним, как установить сервер баз данных PostgreSQL в Ubuntu 20.04, а также рассмотрим основы администрирования баз данных PostgreSQL.
Предпосылки
Чтобы иметь возможность устанавливать пакеты, вам необходимо войти в систему как пользователь root или с привилегиями sudo .
Установка PostgreSQL в Ubuntu
На момент написания статьи последней версией PostgreSQL, доступной в официальных репозиториях Ubuntu, была PostgreSQL версии 10.4.
Выполните следующие команды для установки сервера PostgreSQL в Ubuntu:
sudo apt updatesudo apt install postgresql postgresql-contrib
Мы также устанавливаем дополнительный пакет PostgreSQL, который предоставляет несколько дополнительных функций для системы баз данных 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(открытым текстом). - Ident — поддерживается только для соединений 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 могут создавать новые роли.
В следующем примере показано, как создать новую роль с именем john для базы данных с именем johndb и предоставить привилегии для базы данных:
-
Создайте новую роль PostgreSQL:
sudo su - postgres -c "createuser john" -
Создайте новую базу данных PostgreSQL:
sudo su - postgres -c "createdb johndb"
Чтобы предоставить пользователю разрешения на доступ к базе данных, подключитесь к оболочке PostgreSQL:
sudo -u postgres psql
и выполните следующий запрос:
GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
Включить удаленный доступ к серверу PostgreSQL
По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс ( 127.0.0.1 ).
Чтобы включить удаленный доступ к серверу PostgreSQL, откройте файл конфигурации postgresql.conf и добавьте listen_addresses = '*' в раздел CONNECTIONS AND AUTHENTICATION .
sudo nano /etc/postgresql/12/main/postgresql.conf
/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 .
Ниже приведены несколько примеров, демонстрирующих различные варианты использования:
/etc/postgresql/12/main/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. Подробнее об этом можно узнать в документации по PostgreSQL 12 .
Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.
База данных Ubuntu PostgreSQL Не используете Ubuntu 20.04?
Выберите другую ОС: центос 7 центос 8 дебиан 10 дебиан 9 убунту 18.04
Связанные руководства