Подключиться к Postgres, работающему на хосте Windows, из WSL2?

Я пытаюсь подключиться к базе данных PostgreSQL, установленной на моем компьютере с Windows, из WSL2, однако при подключении возникают проблемы, буду признателен, если вы поможете мне решить эту проблему. В дополнение к этому я уже пробовал варианты ниже.

  1. Windows postgreSQL отлично работает на порту

  2. Имейте ниже запись вpg_hba.confфайл

            host     all            all             0.0.0.0/0                md5
    
  3. Проверил IP-адрес Windows для WSL2 с помощью следующей команды, а затем Telnet, все равно безуспешно.

             sudo cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }' 
     172.19.240.1
     telnet 172.19.240.1 5432
    
  4. Определено правило брандмауэра для входящего трафика для порта.5432из брандмауэра Защитника Windows в режиме повышенной безопасности Все еще не работает

  5. полностью отключил брандмауэр - та же проблема :(

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.

Я не эксперт ни в чем из того, что написал выше, поэтому не стесняйтесь предлагать лучшие решения.

Другие вопросы по тегам