Подключиться к 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.
Я не эксперт ни в чем из того, что написал выше, поэтому не стесняйтесь предлагать лучшие решения.