【问题标题】:PgAdmin on Windows 10 with Postgres when installed via Bash on Ubuntu on Windows通过 Windows 上的 Ubuntu 上的 Bash 安装带有 Postgres 的 Windows 10 上的 PgAdmin
【发布时间】:2018-01-24 05:28:55
【问题描述】:

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

我很高兴在 Windows 上通过 Bash on Ubuntu 安装我所有的 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 On Ubuntu On Windows Postgres DB

【问题讨论】:

  • 我刚刚了解到您的线程中存在适用于 Windows 的 bash :) 可能会让人头疼,因为 Windows 上的 Rails 不是一个简单的设置(但运行良好)......但我很想知道如何Windows 上的 Bash 上的 Rails 会很好(据我所知微软,一个额外的层仍然是一个额外的层)..
  • @David Cruwys 你能解决这个问题吗?

标签: ruby-on-rails postgresql windows-10 pgadmin bash-on-windows


【解决方案1】:

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

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

【讨论】:

  • 这是否可以反过来工作,即如果在 Windows 上安装了 postgres,我们仍然可以使用 R 或 Python 在 WSL 中访问它(而不是通过 pgAdmin)吗?
【解决方案2】:

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

【讨论】:

  • 我确实从localhost 更改为127.0.0.1,但现在又出现了另一个错误FATAL: password authentication failed for user "postgres"。为了在 WSL 中设置 postgres,我关注了 Microsoft docs 并相应地更改了密码。
  • 非常感谢!!我重复此信息以帮助他人:我的 PgAdmin 与数据库 con wsl2 的连接完美工作,但是选择表记录的查询非常慢(我没有收到请求的响应)并且我创建了一个新的服务器连接 127.0 .0.1 而不是 localhost 并且请求完美!实时。谢谢谢谢谢谢!我爱你哈哈
  • @PrateekJha 我遇到了同样的问题,我尝试用这些命令stackoverflow.com/a/12721095/10592134更改密码,并尝试在PgAdmin中再次创建db,它成功了!
  • @ChloeSun 我通过在 postgresql.conf 文件中设置允许所有连接解决了这个问题。
【解决方案3】:

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

在我得到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

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

【讨论】:

【解决方案4】:

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

【讨论】:

    【解决方案5】:

    首先,运行

    sudo -u postgres psql -c 'SHOW config_file'
    

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

    listen_addresses = '*'`
    

    然后运行

    sudo service postgresql restart
    

    【讨论】:

      【解决方案6】:

      我在 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 作为主机设置(通常有效,如果无效,您可以提供通常在 172 范围内的 bash ip)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多