windows - 从 Windows 10 PgAdmin 连接安装在 Hyper-V Ubuntu 中的 docker 中的 PostgreSQL

标签 windows postgresql docker ubuntu

我需要帮助从 Windows 10 PgAdmin 连接安装在 HyperV ubuntu 18.4 内的 Docker 中的 PostgreSQL。到目前为止,我尝试了以下

第 1 步:在 Docker 中安装 Postgres(在 Hyper-V 上运行的 Ubuntu)

sudo docker run -p 5432:5432 --name pg_test -e POSTGRES_PASSWORD=admin -d postgres

第二步:创建数据库
docker exec -it pg_test bash
psql -U postgres
create database mytestdb

第三步:获取ip地址
sudo docker inspect pg_test | grep IPAddress
//returned with 172.17.0.2

第 4 步:pg_hba.conf
host    all             all             0.0.0.0/0               md5

第 5 步:当我尝试从 Windows PgAdmin 4 连接时,出现以下错误 -
备注 : 我也尝试过使用 UBUNTU VM IP 地址,但没有运气
enter image description here

最佳答案

您的情况是您尝试从另一个子网连接到 postgres,即如果您不使用桥接协议(protocol),则将 windows 子网连接到虚拟机管理程序子网。

所以案例1:

  • 如果这是在 NAT\HOST 而不是在网桥上,那么您需要确保您能够从 windows 服务器 ping ubuntu 服务器。
  • 接下来是确保从 ubuntu 端打开端口。您如何检查,从 windows cmd 提示符对端口号执行 telnet。

    远程登录 192.168.0.10 5432

  • 如果您已桥接并且您也可以 ping ping 服务器,请检查是否打开了 telnet 工作的端口。您需要确保在 postgres.conf 文件中
    “收听地址”是“*”。仅此而已。

    再次从 ubuntu 的操作系统级别运行命令 systemctl stop firewalld停止防火墙,然后尝试连接。如果这可行,那么您需要使用以下命令在防火墙中打开端口:
    firewall-cmd --permanent --add-port 5432/tcp
    

    我可以从你的 docker image 中看到 5432 已经打开。这更多的是端口映射和防火墙的东西。

    关于windows - 从 Windows 10 PgAdmin 连接安装在 Hyper-V Ubuntu 中的 docker 中的 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949864/

    相关文章:

    c++ - 混合来自不同编译器的 C++ 代码

    带有 gin_trgm_ops 选项的 Postgresql BTREE_GIN 索引?

    docker - 如何让 .NET Core 控制台应用程序在 Docker 容器中保持事件状态

    php - 为什么 mysql CLI 可以连接,而 WordPress 却不能?

    python - 如何在 Windows 上的 python 中创建区分大小写的文件?

    c# - 从 DLL 打开对话框

    sql - 为什么在解释查询中看不到枚举类型的索引?

    postgresql - 为什么 Citus 会因某些 bool 约束而出错?

    docker - 如何创建基础CoreOS镜像并基于该镜像构建自定义父镜像

    linux - itcl tabnotebook 在 Windows 上缺少选项卡