从WSL的Linux调用Windows 10上的PostgreSQL(或其他服务器)

经过/经历

    • WSLのLinxからWindows10側のPostgreSQL(などのサーバー)を呼び出そうとして、すぐにできなかったのでメモ

 

    • WSLのLinuxとWindows 10間の通信で考慮することがある

 

    結構、大変なので、WSL側にPostgreSQL Serverを入れるなどを検討した方がよいのかもしれない

环境

Windows 10 旁

    • Windows 10

 

    • postgresql-13.3-2-windows-x64.exe

 

    • Windows Terminal

 

    WSL2

Paraphrase: Ubuntu 在 WSL 的一侧

    • Windows Subsystem for Linux Ubuntu 20.04

 

    • postgresql-client-common

 

    • postgresql-client-12

 

    net-tools
sudo apt install postgresql-client-common
sudo apt install postgresql-client-12
sudo apt install net-tools

在WSL的Linux环境中确认IP地址(通过WSL操作)

ifconfig

获取WSL访问Windows 10侧的IP地址(通过WSL操作)

    nameserverがWindows10側のIPになるのを利用している? (*1を参考にした)
grep nameserver /etc/resolv.conf | awk '{print $2}'
    • 起動の度にIPが変わるようなので、Windows10側のIPを書きだすコマンドを .bashrc に追加するなどの仕組みが必要そう (*1 ではhostsに追記しているようだ)

 

    今回は試していないが、以下が *1 にあるの内容
cat /etc/hosts | grep 172.; test $? -eq 0 && $1 || echo -e "$(grep nameserver /etc/resolv.conf | awk '{print $2, " host"}')\n$(cat /etc/hosts)" | sudo tee /etc/hosts

PostgreSQL客户端认证配置文件(访问控制)的配置(Windows 10侧的配置)

    PostgreSQL の pg_hba.conf を編集

地點

C:\Program Files\PostgreSQL\13\data\

编辑内容示例

编辑内容的样例

    • WSLから通信できるように設定する

 

    (クラスBのプライベートIPアドレスを指定したつもりだが正しいだろうか)
host    all             all             172.16.0.0/12           trust

安装防病毒等安全应用程序的设置

    各アプリで、通信できるように設定を見直す

Windows Defender 防火墙的设置示例

    • 「受信の規則」で「プロトコルおよびポート」を開放

 

    「スコープ」を指定して、IPアドレスを指定
defender.png
rule.png
port.png
range.png

执行psql

psql -h 172.x.x.x -U postgres

提供的資源。

    *1 https://stackoverflow.com/questions/56824788/how-to-connect-to-windows-postgres-database-from-wsl
广告
将在 10 秒后关闭
bannerAds