Настройка удаленного подключения к PostgreSQL на Windows Server 2019

По умолчанию PostgreSQL принимает подключения только с локального хоста, для того чтобы мы могли подключиться к СУБД удаленно — нужно внести изменения в конфигурационный файл и открыть порты в Windows.

Редактирование конфигурации PostgreSQL

Перейдите в директорию, в которой располагаются БД PostgreSQL. Для PostgreSQL 13 это следующие директории:

В директории data найдите файл pg_hba.conf и откройте его любым текстовым редактором. В конец файла добавьте следующую запись:

host postgres postgres all md5

Расшифровка записи:

Вид подключения База данных Пользователь IP-адрес удаленного подключения Метод аутентификации
host postgres postgres all md5

Мы разрешили подключения к СУБД с любого IP под стандартным пользователем postgres к стандартной базе postgres. Конечно, так делать нельзя. Это небезопасно. Администратор должен создать пользователя для удаленного подключения с ограниченными правами.

Далее необходимо убедиться в наличии строки listen_addresses = '*' в файле postgresql.conf. Файл находится там же, в директории data. Откройте файл в текстовом редакторе и найдите раздел CONNECTIONS AND AUTHENTICATION.

В одной из первых строчек раздела будет указан параметр listen_addresses = '*'. Важно убедиться в том, что значение параметра = '*'. Если параметр отсутствует или имеет другое значение. Скопируйте правильное значение параметра из нашей инструкции и вставьте его в файл.

Редактирование конфигурационных файлов PostgreSQL закончено, теперь осталось настроить брандмауэр Windows.

Настройка брандмауэра Windows

Кликнете по иконке поиска, расположенной справа от кнопки Пуск и введите в строку запроса: защит… (в английской версии defend). В поисковой выдачи вы увидите: Монитор брандмауэра Защитника Windows.

Кликнув по монитору брандмауэра, откроется окно управление правилами подключения к портам. Выберите раздел Правила для входящих подключений и кликнете по кнопке Создать правило, расположенной в правом столбце Действия.

Откроется мастер создания правила для нового входящего подключения. Выберите тип правила — для порта. Нажмите кнопку Далее.

Теперь необходимо указать протокол и порт, для которого будет настроено правило входящего доступа. По умолчанию PostgreSQL «слушает» 5432 порт. Вот его и откроем.

Далее мы разрешаем внешнии подключения к порту 5432.

На следующем шаге мы все оставляем без изменений и нажимаем Далее.

На последнем шаге задаем интуитивно понятное имя подключения и описание. Сохраняем правило и проверяем, что оно принято. Мы создали правило под названием PostgreSQL ingoing. Оно разрешает входной трафик на порт 5432 с любого внешнего IP и порта.

Проверка удаленного подключения к PostgreSQL

Протестируем возможность подключения к PostgreSQL под Linux. Сначала проверим доступность 5432 порта. Сделать это удобнее всего утилитой telnet. Если telnet не установлен — скачать его можно следующей командой:

apt install telnet

Возможно, вам понадобятся root-права для установки утилиты. Получить их можно командой: sudo su. Конечно, вы должны знать пароль от root-пользователя.

Проверим доступность 5432 порта:

telnet 185.233.2.45 5432

Синтаксис команды следующий: telnet IP-адрес сервера Порт. В нашем случае IP-адрес сервера — 185.233.2.45, а порт — 5432.

Если порт доступен, telnet вернет следующую информацию:

Trying 185.233.2.45...
Connected to 185.233.2.45.
Escape character is '^]'.

Чтобы прервать подключение нажмите 2 раза Enter или сочетание клавиш Ctrl + Z. Теперь, когда мы убедились в доступности 5432 порта, подключимся к PostgreSQL с помощью специального PostgreSQL клиента — psql.

Скачаем psql из репозитория:

apt install psql

Теперь подключимся удаленно к PostgreSQL. Синтаксис команды следующий:

psql -U пользователь PostgreSQL -h IP сервера -d БД для подключения

В нашем случае команда выглядит так:

psql -U postgres -h 185.233.2.45 -d postgres

Далее необходимо ввести пароль пользователя, под которым осуществляется подключения. Пароль задавался при установки PostgreSQL.

Команда вернула следующую информацию:

psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1), server 13.3)
WARNING: psql major version 12, server major version 13.
Some psql features might not work.
Type "help" for help.

postgres=#

Все, мы подключились к PostgreSQL удаленно из Linux с помощью psql.

Последнее обновление: 17.08.2021