Как настроить подключение к PostgreSQL с использованием белого IP-адреса?

Как настроить разрешение подключения к базе данных PostgreSQL извне через белый IP, если стандартный порт занят в докере и установлен режим без SSL? Поменял порт в файле postgresql.conf, установил listen_addresses = '*', и отредактировал файл pg_hba.conf для разрешения подключений. Однако, подключение через pgadmin не удается.
Изображение к вопросу
  • 30 января 2024 г. 20:08
Ответы на вопрос 1
Для настройки подключения к PostgreSQL с использованием "белого" IP-адреса (общедоступного IP-адреса) и учитывая, что стандартный порт занят в Docker и SSL не используется, выполните следующие шаги:

1. Изменение конфигурации PostgreSQL:
   - Откройте файл `postgresql.conf`, который обычно находится в каталоге `data` вашего PostgreSQL.
   - Установите для параметра `listen_addresses` значение `'*'`, чтобы сервер принимал подключения на всех сетевых интерфейсах.
   - Поменяйте стандартный порт 5432 на другой, если он занят (например, на 5433), указав `port = 5433`.
   - Сохраните изменения и перезапустите PostgreSQL, чтобы применить настройки.

2. Настройка `pg_hba.conf`:
   - Откройте файл `pg_hba.conf`, который также находится в каталоге `data` вашего PostgreSQL.
   - Добавьте правила для разрешения подключений из внешних источников. Например, чтобы разрешить подключения для всех пользователей с определённого IP-адреса или подсети без SSL, добавьте следующую строку:
     ```
     host    all    all    <ваш_внешний_ip>/32    trust
     ```
     Или, если вы хотите использовать аутентификацию по паролю:
     ```
     host    all    all    <ваш_внешний_ip>/32    md5
     ```
   - Вместо `<ваш_внешний_ip>` укажите белый IP-адрес, с которого будут происходить подключения, или используйте `0.0.0.0/0` для разрешения подключений со всех адресов (не рекомендуется из соображений безопасности).
   - Сохраните изменения и перезапустите PostgreSQL.

3. Настройка Docker (если PostgreSQL работает в контейнере Docker):
   - Если стандартный порт занят и вы запускаете PostgreSQL в Docker, убедитесь, что вы определили маппинг портов в вашем `docker run` команде или в `docker-compose.yml` файле правильно:
     ```
     docker run -p <внешний_порт>:<внутренний_порт> ...
     ```
     Внешний порт — это порт на хост-машине, на который будет перенаправляться трафик. Внутренний порт — это порт, на который настроен PostgreSQL (например, 5433).

4. Настройка брандмауэра или маршрутизатора:
   - Если вы находитесь за брандмауэром или маршрутизатором, убедитесь, что правила трансляции портов (port forwarding) и правила брандмауэра настроены таким образом, чтобы разрешать входящий трафик на новый порт PostgreSQL.

5. Проверка подключения:
   - После конфигурации попробуйте подключиться через pgAdmin или другой инструмент для работы с PostgreSQL, указав соответствующий адрес сервера, порт (новый, если был изменен), имя пользователя и пароль.

Если подключение всё ещё не удаётся, проверьте следующее:
- Запущен ли PostgreSQL и слушает ли он новый порт.
- Правильно ли настроен маппинг портов в Docker.
- Настроены ли правильно брандмауэр и правила маршру
Похожие вопросы