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

问题描述 投票:0回答:7

我想在 Windows 上的 Ubuntu 上的 Bash 中安装 Rails 5/Postgres 并且还可以通过 PgAdmin for Windows 访问 Postgres 数据库。

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

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

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

基本上我希望我的Windows安装的PgAdmin能够与我的Windows上的Ubuntu上的BashPostgres DB

进行通信
ruby-on-rails postgresql windows-10 pgadmin bash-on-windows
7个回答
36
投票

编辑:在步骤 5.2 中,如果遇到超时服务器错误或类似情况,请使用

127.0.0.1
而不是
localhost
感谢下面的 Catriona 响应。

这是我从 Windows pgAdmin 连接安装在 WSL Ubuntu 中的 Postgres DB 的操作。

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


14
投票

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

就我而言,我得到了

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

您可能需要更改文件的权限才能编辑它,不要忘记完成后恢复此更改。


11
投票

@kiatng 提供的答案也对我有帮助。但是,当我尝试访问表中的数据时,出现了

socket not connected
错误。通过另一个Google搜索,我发现我需要将localhost更改为127.0.0.1,然后我才能访问数据。 只是把它放在这里以防对其他人有帮助。我本来会回复 kiatng 的答案,但我还没有足够的“声誉”来这样做!


6
投票

我在 WSL2 - bash 上运行的 postgresql 也遇到了类似的问题,并且希望从 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 ip,通常在 172 范围内)


2
投票

Ubuntu 有 X 服务器,您可以在其中运行 pgAdmin III GUI(我从未尝试过 IV,但很确定它在 Linux 上运行得更好)。不过,如果您想在 Windows 上的某个虚拟机上设置数据库并使用 Windows 客户端 - 是的 - 它会起作用。您需要在虚拟机和托管 Windows 之间设置一些网桥,就是这样 - 使用 Ubuntu IP 连接到 Postgres。 (您还需要允许

pg_hba.conf
中的连接并将
listen_address
设置为
*
,但无论如何都需要对外部连接执行此操作)


2
投票

在我的 WSL2 案例中,本地主机转发似乎不起作用,因此提到的解决方案不起作用。我必须做一个

Network Reset
,这对我有用。

参考:Github 上的 WSL 问题

如果上述解决方案不适合您,请尝试执行如下图所示的

Network Reset
,然后尝试上述答案。


-1
投票

首先,跑步

sudo -u postgres psql -c 'SHOW config_file'

打开生成的文件,取消注释

listen_addresses
,然后更改为:

listen_addresses = '*'`

然后运行

sudo service postgresql restart
© www.soinside.com 2019 - 2024. All rights reserved.