我想在 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
进行通信编辑:在步骤 5.2 中,如果遇到超时服务器错误或类似情况,请使用
127.0.0.1
而不是 localhost
,感谢下面的 Catriona 响应。
这是我从 Windows pgAdmin 连接安装在 WSL Ubuntu 中的 Postgres DB 的操作。
sudo service postgresql start
Save password?
发布以防有人遇到我的问题
就我而言,我得到了
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
您可能需要更改文件的权限才能编辑它,不要忘记完成后恢复此更改。
@kiatng 提供的答案也对我有帮助。但是,当我尝试访问表中的数据时,出现了
socket not connected
错误。通过另一个Google搜索,我发现我需要将localhost更改为127.0.0.1,然后我才能访问数据。
只是把它放在这里以防对其他人有帮助。我本来会回复 kiatng 的答案,但我还没有足够的“声誉”来这样做!
我在 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 范围内)
Ubuntu 有 X 服务器,您可以在其中运行 pgAdmin III GUI(我从未尝试过 IV,但很确定它在 Linux 上运行得更好)。不过,如果您想在 Windows 上的某个虚拟机上设置数据库并使用 Windows 客户端 - 是的 - 它会起作用。您需要在虚拟机和托管 Windows 之间设置一些网桥,就是这样 - 使用 Ubuntu IP 连接到 Postgres。 (您还需要允许
pg_hba.conf
中的连接并将 listen_address
设置为 *
,但无论如何都需要对外部连接执行此操作)
在我的 WSL2 案例中,本地主机转发似乎不起作用,因此提到的解决方案不起作用。我必须做一个
Network Reset
,这对我有用。
如果上述解决方案不适合您,请尝试执行如下图所示的
Network Reset
,然后尝试上述答案。
首先,跑步
sudo -u postgres psql -c 'SHOW config_file'
打开生成的文件,取消注释
listen_addresses
,然后更改为:
listen_addresses = '*'`
然后运行
sudo service postgresql restart