По умолчанию PostgreSL принимает подключения только с локального хоста. Для того чтобы получить доступ к СУБД удаленно необходимо изменить конфигурационный файл и открыть порты в Windows.
Реализуем конфигурацию PostgreSQL
Сначала вам потребуется перейти в директорию, в которой располагаются БД PostgreSQL. Для PostgreSQL 13. В директории data найдите файл pg_hba.conf и откройте его любым текстовым редактором.
- x86: C:\Program Files (x86)\PostgreSQL\13\data
- x64: C:\Program Files\PostgreSQL\13\data
В конец файла добавьте обязательно допишите:
host postgres postgres all md5
Расшифровка:
Вид подключения | База данных | Пользователь | IP-адрес удаленного подключения | Метод аутентификации |
---|---|---|---|---|
host | postgres | postgres | all | md5 |
Мы разрешили подключение к системе postgres с любого IP, включая пользователя из стандартной базы MS PostGreen. Это небезопасно и опасно для пользователей. Однако это может быть опасным в будущем: найдите строку listten_ addresses ='*''в файле conf/pcgl.conf. Далее откройте файл в текстовом редакторе и найдите раздел CONNECTIONS AND AUTHENTICATION.
В одной из первых строк раздела указан параметр listen_ addresses ='* '. Если значение этого параметра отсутствует или имеет другое значения, скопируйте его в файл и вставьте обратно!
На этом редактирование закончено, теперь осталось настроить брандмауэр Windows.
Настройка брандмауэра Windows
Нажмите сочетание клавиш Win + S. В поисковой строке введите "защит..." или "defend"(для английской версии). Переходим в "Монитор брандмауэра Защитника Windows".
Переходим внутрь. Выберите раздел Правила для входящих подключений и кликните по кнопке Создать правило, расположенной на правом столбце Действия.
Откроется мастер создания правила для нового входящего подключения. Выберите тип правила — для порта. Нажмите кнопку Далее.
Для настройки правил входящего доступа необходимо указать протокол и порт. По умолчанию PostgreSQL «слушает» 5432 порт. Открываем именно его.
Далее мы разрешаем внешние подключения к порту 5432.
В
Все оставляем без изменений и нажимаем Далее.
Мы создали правило под названием PostgreSeal ingoing, которое позволяет вход в порт 5432 с любого внешнего IP и порта.
Проверка удаленного подключения к PostgreSQL
Проверим доступность 5432 портов в PostgreSL под Linux. Сделать это можно следующей командой в утилите 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.