Для успешного подключения к базе данных PostgreSQL на удалённом сервере с использованием TCP/IP необходимо убедиться в правильной настройке как сервера PostgreSQL, так и системы безопасности. Следуйте приведённым ниже шагам, чтобы решить вашу проблему:
### Шаг 1: Настройка PostgreSQL
1. **Проверьте конфигурацию PostgreSQL**: Откройте файл конфигурации PostgreSQL, который обычно находится по пути `/etc/postgresql/<версия>/main/postgresql.conf`. Найдите и убедитесь, что параметр `listen_addresses` установлен правильно.
```bash
sudo nano /etc/postgresql/12/main/postgresql.conf
```
Измените строку `listen_addresses` на:
```plaintext
listen_addresses = '*'
```
Это позволит PostgreSQL слушать входящие соединения на всех интерфейсах. Если вы хотите ограничить доступ только определённым IP-адресам, укажите их через запятую.
2. **Настройте доступ в pg_hba.conf**: Затем откройте файл `pg_hba.conf`, который находится в той же директории. Добавьте строку, которая позволяет подключение к базе данных:
```bash
sudo nano /etc/postgresql/12/main/pg_hba.conf
```
Добавьте следующую строку в конец файла:
```plaintext
host all all 0.0.0.0/0 md5
```
Это разрешит доступ всем пользователям с любого IP-адреса. Рекомендуется ограничить диапазон IP-адресов для повышения безопасности.
3. **Перезапустите PostgreSQL**: После внесения изменений необходимо перезапустить сервер PostgreSQL для применения новых настроек:
```bash
sudo systemctl restart postgresql
```
### Шаг 2: Открытие порта в брандмауэре
Если на сервере включён брандмауэр (например, UFW), необходимо разрешить входящие соединения на порт PostgreSQL (по умолчанию 5432):
```bash
sudo ufw allow 5432/tcp
```
### Шаг 3: Подключение с использованием HeidiSQL
Теперь, когда база данных настроена на приём TCP/IP соединений, вы можете подключаться к ней с вашего Windows-компьютера:
1. В HeidiSQL создайте новое подключение.
2. В поле «Hostname / IP» укажите IP-адрес вашего сервера Ubuntu.
3. Убедитесь, что в полях «User» и «Password» указаны правильные учетные данные для доступа к базе данных.
4. При необходимости укажите базу данных, к которой вы хотите подключиться.
### Примечание о SSH-туннелировании
Если вы всё же хотите использовать SSH-туннель, убедитесь, что правильный порт (5432) перенаправляется через ваш SSH-клиент (например, PuTTY или встроенный OpenSSH в Windows). Примеры создания SSH-туннеля:
```bash
ssh -L 5432:localhost:5432 user@remote-server
```
После этого в HeidiSQL вы можете подключаться к `localhost` на порту `5432`.
### Заключение
Следуя указанным шагам, вы должны успешно настроить TCP/IP-соединение с базой данных PostgreSQL на удаленном сервере Ubuntu. Не забудьте иметь в виду безопасность вашего сервера и ограничивать доступ при необходимости.