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

Dav*_*wys 6 postgresql ruby-on-rails pgadmin windows-10 bash-on-windows

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

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

我看过本教程“ 如何在Windows-10-上安装ruby-on-rails-with-postgresql”,但看来他是将Postgres安装到Windows中,而不是Linux子系统中。

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

基本上,我想我的Windows安装pgAdmin的传达给我的击在Ubuntu在Windows上 的Postgres数据库

kia*_*tng 24

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

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

添加服务器时的浏览器截图

  • 有超时吗?即使在 Linux 上您使用“localhost”,在 Windows 上 pgAdmin4 使用“127.0.0.1”... (4认同)

Cat*_*ett 8

@kiatng 提供的答案也帮助了我。但是,socket not connected当我尝试访问表中的数据时出现错误。通过另一个谷歌搜索,我发现我需要将 localhost 更改为 127.0.0.1,然后我才能访问数据。只是把它放在这里以防它帮助别人。我会回复 kiatng 的回答,但我还没有足够的“声誉”来这样做!

  • 我确实从“localhost”更改为“127.0.0.1”,但现在收到另一个错误“致命:用户“postgres”的密码身份验证失败”。为了在 WSL 中设置 postgres,我遵循了 [Microsoft 文档](https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-database) 并相应地更改了密码。 (2认同)
  • @PrateekJha我也遇到了同样的问题,我尝试使用这些命令更改密码/sf/answers/890476681/,并尝试在PgAdmin中再次创建数据库,它成功了! (2认同)

tit*_*300 7

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

在我的情况下Connection refused,我能够通过在 postgresql.conf 文件中将 listen_addresses 属性更改为“*”来解决

在 ubuntu 上找到 conf 文件

sudo -u postgres psql -c 'SHOW config_file'
Run Code Online (Sandbox Code Playgroud)

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

listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

然后使用重新启动postgres

sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)

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


小智 5

我在 WSL2 - bash 上运行 postgresql 时遇到了类似的问题,并且希望从在 Windows 上运行的 pgadmin 进行连接。

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

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

listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

然后在 /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
Run Code Online (Sandbox Code Playgroud)

重新启动 PostgreSQL

sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)

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

在你的 pgadmin 中,在连接设置中尝试 localhost 作为主机设置(通常有效,如果不起作用,你可以给出 bash ip,通常在 172 范围内)