Windows 上的 PgAdmin 10 和 Postgres 是通过 Bash 在 Ubuntu 上安装的 Windows

PgAdmin on Windows 10 with Postgres when installed via Bash on Ubuntu on Windows

我想在 Bash Ubuntu Windows 内安装 Rails 5/Postgres 并且还能够通过 PgAdmin for Windows.

访问 Postgres 数据库

很高兴通过 Bash 在 Ubuntu 在 Windows 安装我所有的 rails 依赖项,但我知道我不能 运行 来自 Bash 的任何标准 GUI 工具,想知道是否可以在 Linux 子系统上安装 Rails 和 PostGres,然后使用 Windows 版本的 PgAdmin 查询我的数据库

我看过这个教程 how-to-install-ruby-on-rails-on-windows-10-with-postgresql 但他似乎将 Postgres 安装到 windows 而不是 Linux 子系统。

我想知道这是否是让所有这些工具很好地协同工作的唯一方法。

基本上我希望我的 Windows 安装的 PgAdmin 与我的 Bash 在 Ubuntu 在 [=34] 进行通信=] Postgres 数据库

Ubuntu 有 X 服务器,您可以在其中 运行 pgAdmin III GUI(我从未尝试过 IV,但可以肯定它会在 linux 上运行得更好)。不过,如果您想在 Windows 上的某个虚拟机上设置数据库并使用 Windows 客户端 - 是的 - 它会起作用。您需要在虚拟机和主机 Windows 之间设置一些网桥,仅此而已 - 使用 Ubuntu IP 连接到 Postgres。 (您还需要在 pg_hba.conf 中允许连接并将 listen_address 设置为 *,但这无论如何都需要为外部连接完成)

这是我从 Windows pgAdmin.

连接 WSL Ubuntu 中安装的 Postgres DB 所做的操作
  1. 在 Windows 中启动 Ubuntu。
  2. 在 Ubuntu 终端中启动 postgres:sudo service postgresql start
  3. 下载最新的 pgAdmin 并安装在 Windows。
  4. 启动 pgAdmin,浏览器中的新选项卡打开;单击 添加新服务器 link.
  5. 在弹出 ​​Create - Server window 浏览器中:
    1. General 选项卡:我将 Name 设置为 localhost
    2. Connection 选项卡:我将 Host name/address 设置为 localhost,设置密码postgres,这是默认的,点击Save password?
    3. 我保存设置,其余字段保持原样
  6. 就是这样,我可以立即看到在 Postgres 中创建的数据库。

@kiatng 提供的答案对我也有帮助。然而,当我试图访问我的表中的数据时,我遇到了 socket not connected 错误。通过另一个 Google 搜索,我发现我需要将 localhost 更改为 127.0.0.1 然后我才能访问数据。 只是把它放在这里以防它帮助别人。我会回复 kiatng 的回答,但我还没有足够的 'reputation' 回复!

发帖以防有人遇到我的问题

在我的例子中,我得到了 Connection refused,我可以通过在 postgresql.conf 文件

中将 listen_addresses 属性 更改为 '*' 来解决

在 ubuntu

上找到 conf 文件
sudo -u postgres psql -c 'SHOW config_file'

找到文件后,您需要像这样更改listen_addresses

listen_addresses = '*'

然后使用

重启postgres
sudo service postgresql restart

您可能需要先更改文件的权限才能对其进行编辑,不要忘记在完成后还原此更改。

首先,运行

sudo -u postgres psql -c 'SHOW config_file'

打开生成的文件,取消注释 listen_addresses,并将其更改为:

listen_addresses = '*'`

然后运行

sudo service postgresql restart

我在 WSL2 上遇到了与 postgresql 运行 类似的问题 - bash 并希望从 windows 上的 pgadmin 运行 连接。

以下设置将完成工作(就像对我所做的那样)

在/etc/postgreql//main/postgresql.conf中有

listen_addresses = '*'

然后在/etc/postgreql//main/pg_hba.conf中有

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             172.0.0.0/8             md5

重启 postgresql

sudo service postgresql restart

这允许本地主机访问和 WSL ip 访问。

在您的 pgadmin 中,在连接设置中尝试将 localhost 作为主机设置(通常有效,如果无效,您可以提供 bash 通常在 172 范围内的 ip)