Подключиться к Postgres, работающему на хосте Windows, из WSL2?
Я пытаюсь подключиться к базе данных PostgreSQL, установленной на моем компьютере с Windows, из WSL2, однако при подключении возникают проблемы, буду признателен, если вы поможете мне решить эту проблему. В дополнение к этому я уже пробовал варианты ниже.
Windows postgreSQL отлично работает на порту
Имейте ниже запись в
pg_hba.conf
файлhost all all 0.0.0.0/0 md5
Проверил IP-адрес Windows для WSL2 с помощью следующей команды, а затем Telnet, все равно безуспешно.
sudo cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }' 172.19.240.1 telnet 172.19.240.1 5432
Определено правило брандмауэра для входящего трафика для порта.
5432
из брандмауэра Защитника Windows в режиме повышенной безопасности Все еще не работаетполностью отключил брандмауэр - та же проблема :(
1 ответ
Мне пришлось сделать следующее, чтобы он работал в моей среде (Windows 11, WSL2 — Debian).
В файловой системе Linux:
- Открыть или создать файл
~/.bash_profile
- Добавьте эту строку:
export WINDOWS_HOST=$(cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2)
Это позволит получить IP-адрес хоста Windows и установить его в качестве переменной env для дистрибутива при запуске.
- Перезапустите дистрибутив:
wsl --shutdown
из терминала Windows cmd иwsl
чтобы начать все заново. Вы можете ввестиenv
в терминале WSL2, чтобы убедиться, что переменная env присутствует.
На стороне Windows:
1. В брандмауэре Windows добавьте правило входящего трафика для TCP- порта 5432 (открытый порт postgresQL), выполните следующие действия:
тип
wf.msc
в терминале cmd, чтобы открыть брандмауэрвыбирать
Inboud rules
выбирать
Port
тогда следующийвыбирать
TCP
и введите5432
на входе конкретного порта , затем следующийвыбирать
Autorize connection
и пройдите 2 последних шага
2 — Разрешить входящие соединения из конфигурации postgresQL:
- открыть файл
pg_hba.conf
находится здесь по умолчаниюC:\Program Files\PostgreSQL\12\data\pg_hba.conf
- замените строку в разделе «Локальные подключения IPv4» следующей:
host all all 0.0.0.0/0 md5
Теперь каждому IP-адресу разрешен доступ к вашему серверу pg, это необходимо, поскольку IP-адрес вашего дистрибутива WSL меняется при каждом запуске. Пожалуйста, учтите возможные недостатки.
На этом этапе у вас должен быть доступ к серверу PostgresQL, работающему в вашей Windows, из любого места вашего дистрибутива Linux WSL2, используя переменную WINDOWS_HOST в качестве хоста базы данных. Например, в вашем коде JavaScript вы можете получить к нему доступ черезprocess.env.WINDOWS_HOST
.
Я не эксперт ни в чем из того, что написал выше, поэтому не стесняйтесь предлагать лучшие решения.