从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アドレスを指定
执行psql
psql -h 172.x.x.x -U postgres
提供的資源。
- *1 https://stackoverflow.com/questions/56824788/how-to-connect-to-windows-postgres-database-from-wsl