【问题标题】:"Server doesn't listen" in pgAdmin III with postgreSQL带有 postgreSQL 的 pgAdmin III 中的“服务器不听”
【发布时间】:2015-09-09 09:06:43
【问题描述】:

首先:我是数据库方面的新手。

我正在将 postgreSQL 与 pgAdmin III 一起使用,直到几天前它都运行良好:几天前,当我不处理它时,我在 Windows 的“后台进程”中看到几个相同的 postgreSQL 程序( ?) 正在运行,我决定停止它们,因为当时我没有使用它们。错误:现在,当我尝试连接到服务器(在本地主机上)时,我收到错误消息:

“服务器不听”

服务器不接受连接:连接库报告 无法连接到服务器:连接被拒绝 (0x0000274D/10061) 服务器是否在主机“localhost”(::1) 上运行并接受端口 5432 上的 TCP/IP 连接?无法连接到服务器:连接被拒绝 (0x0000274D/10061) 服务器是否在主机“localhost”(127.0.0.1) 上运行并接受端口 5432 上的 TCP/IP 连接?

我已经查看了 stackoverflow 上的类似主题,查看了 listen_address 文件、postgresql.conf 和 pg_hba.conf 文件,但一切似乎都是“正常的”(根据我在这些主题中读到的内容)。

我发布这个是因为......好吧,我没有找到任何其他人做我所做的事情(停止后台进程,然后无法重新连接)。

【问题讨论】:

  • 您确实重新启动了 Postgres 服务,是吗? (顺便说一句:即使数据库空闲,也有多个 postgres 进程是正常的,参见例如:这里:postgresql.org/docs/current/static/monitoring-ps.html)。
  • 嗯...由于我不记得我第一次连接到服务器时做了什么,在搜索了一下如何重新启动它(徒劳无功)之后,我认为pgAdmin自动启动当我尝试连接时...显然不是这样?
  • 不,pgAdmin 不启动任何服务器,它只是连接到它们。在默认安装中,Postgres 注册为 Windows 服务。所以你需要从Windows控制面板启动服务。
  • 我试图启动 postgres 服务(在命令行中,因为我在控制面板中找不到它 - 没有发生错误,所以显然它有效),但我看不到它在后台(或前台)进程中,我仍然无法连接。
  • technet.microsoft.com/en-us/library/cc736564%28v=ws.10%29.aspx 或 wikihow.com/Start-Services-in-Windows 那么你是如何从命令行“启动”Postgres 的呢?

标签: postgresql


【解决方案1】:

使用服务(开始 → 运行 → services.msc)并查找 postgresql-[version] 服务。运行了吗?

  • 如果没有,请尝试启动它。
    • 如果可行,您可以通过将 Windows 的启动类型更改为 Automatic 来使其自动启动;或者Automatic, delayed start,如果您不希望它太慢启动速度。
  • 如果无法启动,可能是您刚刚安装了 pgAdmin 而没有安装 PostgreSQL 本身。
  • 如果无法启动,请打开事件查看器(开始 → 运行 → Eventvwr)并查找与 PostgreSQL 服务相关的错误消息。

【讨论】:

    【解决方案2】:

    编辑\data\postgresql.conf找到并编辑这一行listen_addresses到

    listen_addresses = '*'
    

    并取消注释

    port = 5432
    

    【讨论】:

    • 如果我将它设置为 '*' 效果很好,但它似乎不是很安全。不 ?如果我只想设置私有地址范围怎么办?我尝试将listen_addresses 设置为'192.168.0.0/24',但它似乎不起作用:(
    • @MikeVerrier 如果你放这样的东西,它会起作用吗? listen_addresses = '192.168.1.100,192.168.1.101,192.168.1.110'
    • 是的,这样可以正常工作......这是一个可能的解决方案,这意味着我将所有访问机器更改为固定 IP。有没有办法让他们保持 dhcp 并继续工作?
    • 我看到的唯一方法是列出您正在使用的 DHCP 范围内所有可能的 IP 地址。
    【解决方案3】:

    出于安全原因,PostgreSQL 最初不会侦听服务器计算机上的所有可用 IP 地址。为了通过网络访问服务器,您需要先启用监听地址。

    对于从 8.0 版 开始的 PostgreSQL 服务器,这是使用 postgresql.conf 文件中的“listen_addresses”参数控制的。在这里,您可以输入服务器应侦听的 IP 地址列表,或者简单地使用 ''* 来侦听所有可用的 IP 地址。对于早期服务器(版本 7.3 或 7.4),您需要将 "tcpip_socket" 参数设置为 'true'。

    您可以使用 pgAdmin III 中内置的 postgresql.conf 编辑器来编辑 postgresql.conf 配置文件。更改此文件后,您需要重新启动服务器进程才能使设置生效。

    如果您仔细检查了您的配置,但仍然收到此错误 消息,您仍然不太可能遇到致命的 PostgreSQL 不当行为。您可能有一些低级别的网络连接 问题(例如防火墙配置)。请彻底检查 在向 PostgreSQL 社区报告错误之前。

    致谢:PostgreSQL - 大师提示。

    【讨论】:

      【解决方案4】:

      如果在 Windows 上,则可能是防火墙问题。尝试使用 post 5432(或您可能使用的任何帖子)为 postgres 添加规则(TCP 作为协议应该可以工作)。

      【讨论】:

        【解决方案5】:

        只需进入任务管理器 -> 服务 -> postgresql-x64-9.4 - PostgreSQL Server 9.4(右键单击) -> 启动服务 从那里刷新 postgresql 并连接,一切都会好起来的。

        【讨论】:

          【解决方案6】:

          我尝试了所有给定的方法。 postgresql 服务运行良好。最后,在 Windows 中以管理员身份登录。有效。猜猜,postgresql 不允许自己在非管理员用户中运行。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-05-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-24
            • 1970-01-01
            相关资源
            最近更新 更多