【问题标题】:Postgres.app Could not start on port 5432Postgres.app 无法在端口 5432 上启动
【发布时间】:2022-03-21 18:52:20
【问题描述】:

我正在使用http://postgresapp.com。在菜单栏中,它给出了错误“无法在端口 5432 上启动”。同样,如果我尝试从终端启动服务器,我会得到:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

我也跑了pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 并得到了输出server starting,但在连接到 psql 时仍然出现相同的错误。

【问题讨论】:

  • 我的第一个猜测是端口 5432 被你的 mac 上的其他东西占用了。默认情况下 psql 不会使用端口,而是使用你提到的套接字文件(/tmp/.s.PGSQL.5432)。您可以强制它使用带有psql -h localhost 的端口。尝试检查几件事:1 是否使用端口 5432。2:检查您的 postgres (OS) 用户是否有权在 /tmp/ 中创建文件。
  • 我在 /tmp/ 中看到了 .s.PSQL.5433 的内容,如何将其更改为 5432?
  • 我遇到了同样的问题。我认为这与 Apple 的专业应用程序更新有关,因为这是我所做的唯一更改,然后我开始收到此错误。我试过卸载并重新安装 postgresql;卸载并重新安装 pg gem;和其他一些配置调整,但没有结果。仍在努力,但希望尽快看到解决方案。如果我有任何进展,我会通知你。
  • 在我的例子中,我运行的 dBeaver 连接到我的 postgresql 实例。我进行了配置更改并单击了“停止”和“开始”,但很困惑地得到“正在使用的端口”错误。但下面建议的“lsof -i :5432”显示dBeaver 已绑定端口。杀死 dBeaver 和 postgresql 启动就好了。

标签: macos postgresql


【解决方案1】:

如果您在 macOS 机器上运行服务器并通过 Homebrew 安装 Postgres,您可以像这样停止当前实例:

brew services 停止 postgresql

然后单击屏幕顶部本机菜单栏中的大象,它应该会成功启动。

【讨论】:

  • 菜单栏在哪里? :')
  • 好收获!我已经澄清了我的意思是哪个菜单栏。谢谢!
  • @MaxvonHippel 非常感谢我的朋友,你真的让我很开心:)
【解决方案2】:

您可以通过使用

查找 PID 来停止该进程
lsof -i :5432

然后用

杀死它
kill -9 <PID>

【讨论】:

  • 这是适用于任何端口的最通用方法。应该是最好的答案
  • 当我杀死它时,它再次以不同的 PID 运行。请帮忙
  • 我试过了,但它会开始使用另一个 PID 运行。对我有用的是brew services stop postgresql
【解决方案3】:

如果您通过其他方法(例如,从 www.postgresql.org)安装了 Postgres,并且它在启动时自动启动,您可以通过以下方式阻止 Postgres 启动:

sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  
sudo rm -f /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  

提示:在com.edb.launchd 部分之后使用制表符自动完成以找出正在加载的版本。

重新启动 Postgres.app,您应该一切顺利。

(来自http://forums.enterprisedb.com/posts/list/1831.page;jsessionid=70621DC48C99EDE663A6A594B05F1A02#6782

【讨论】:

  • 非常感谢。这对我有用。问题是,每当我终止监听 5432 的进程时,它就会再次启动-_-。再次感谢
  • 救命稻草(需要更多词来评论):D
【解决方案4】:

我只是遇到了这个确切的问题。当我运行 which psql 时,它指向的是安装了 Lion 的 Postgres 客户端工具:

/usr/bin/psql

使用来自Frank Wiles 的提示我运行ps auxw | grep post 来确认postgres 正在运行并且它在正确的端口上运行,这也向我显示了postgres.app 路径:

/Applications/Postgres.app/Contents/MacOS/bin/postgres

所以我通过 .bash_profile 编辑以导出该目录。在第一次尝试中,我将它添加到路径的尽头。当我运行echo $PATH 时,我可以看到 usr/bin 是路径中的第一件事,而which psql 仍然给出了/usr/bin 路径。那时一位朋友指引我朝着正确的方向前进:

export PATH="/Applications/Postgres.app/Contents/MacOS/bin:${PATH}"

启动一个新的终端窗口,然后运行which psql——它应该指向 postgres.app 位置并且 psql 应该启动 postgres shell。现在工作正常。

【讨论】:

  • 对于 9.3,我的路径是 export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:${PATH}"
【解决方案5】:

你有另一个 postgres 实例正在运行,它是唯一对这个端口感兴趣的应用程序。您应该使用 netstat 和 ps 来确定这一点。然后停止实例并卸载它,例如您可能已经安装了enterpiseDb,这就是我所做的。

【讨论】:

  • 在我的情况下,这只是在 MacOSX 上安装 PostGreSQL 几天后随机发生的。然后我重新安装并且一切正常,然后几天后再次显示相同的错误。我想明确一点,我从不更改 PostGreSQL 的 root 密码。请帮忙
【解决方案6】:

我已经尝试了几乎所有解决此问题的方法。对我来说,它总是在我的 MacBook 电池没电时发生,即使计算机已经在睡觉。我在~/Library/Application\ Support/Postgres/var-9.4 中四处寻找,发现了另一个我以前从未见过的postmaster.pid 文件。我删除了它,现在一切都恢复正常了!我正在运行 Postgres.app 版本,而不是 brew 版本。

我采取的步骤:

  1. 确保postgres.app 没有运行。
  2. 运行rm ~/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
  3. 如果您没有var-9.$X 目录,只需运行rm ~/Library/Application\ Support/Postgres/postmaster.pid
  4. 重启postgres.app
  5. 回去开发很酷的东西。

【讨论】:

  • 我遇到了同样的问题。这个答案为我提供了解决方案。关键部分是确保系统无法读取该postmaster.pid 文件。通过rm 删除它或通过mv 重命名它就可以了。不过,我更喜欢将其重命名为 postmaster.pid.problem-cause。人们有不同的安装设置,因此找到该讨厌文件的最佳方法是检查 PosgtreSQL 日志。
【解决方案7】:

这个命令是一个单行命令,可以立即杀死所有 PostgresSQL 进程。

sudo kill -kill $(sudo lsof -t -i :5432)

这解决了我在 Mac OSX Mojave 10.14.1 上的所有问题。

【讨论】:

  • 我后悔运行这个命令,我杀死了我的整个 postgress,现在它无法启动。
【解决方案8】:

我通常在我的 mac 上遇到这个问题,这总是为我解决这个问题

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

希望对你有帮助

【讨论】:

    【解决方案9】:

    我有一个类似的问题,我无法连接到 Postgres.app,即使应用程序本身说它在端口 5432 上运行。

    我不知道为什么,但即使我退出应用程序并检查没有使用 ps -a 运行的 postgres 进程。这些文件存在:

    /tmp/.s.PGSQL.5432
    

    /tmp/.s.PGSQL.5432.lock
    

    我的解决方案是删除这些文件,然后重新启动 postgres.app。

    【讨论】:

    • 这解决了我的问题。不知道为什么这个答案被其他人否决,除非出于某种原因删除 /tmp 文件很危险。
    • 一开始我很兴奋,当通过su(超级用户)看到这些文件并删除它们时,我并不高兴
    • 我试过“brew services stop postgresql”然后删除了/tmp/.s.PGSQL.5432.lock
    【解决方案10】:

    这对我有用: $ sudo pkill -u postgres

    此资源的道具: https://github.com/PostgresApp/PostgresApp/issues/197#issuecomment-474534056

    【讨论】:

      【解决方案11】:

      PID 也可能被占用。 当计算机意外重启时,我遇到了这种情况。

      如果是这样,你必须去:

      ˜/Library/Application Support/Postgres/var-9.4
      

      您可以在 Postgres.app 首选项对话框中检查该路径。

      然后,只需删除 pid 文件

      sudo rm postmaster.pid
      

      服务器立即启动。

      【讨论】:

      • 该文件夹中没有这样的文件。我正在使用 PostGres 9.6,但找不到任何以该扩展名结尾的文件。
      • 那么你的pid没有被占用,还有其他事情发生。
      【解决方案12】:

      当尝试打开 Postgres 应用程序时,遇到关于 post 5432 的相同错误(在 Mac OSX 10.10.5 上)

      我做到了:

      $ lsof -i | grep LISTEN
      

      看到哪个 PID 在那个端口运行 postgres,做了: $ killall {pid} 然后$ brew uninstall postgres

      之后,重新启动我的 Mac,然后运行:

      $ lsof -i | grep LISTEN 再次确认。没有看到任何地方运行 postgres,并且能够在没有收到警告的情况下打开 Postgres 应用程序。

      然后我用$ brew install postgres重新安装了postgres

      另一种选择

      (我也试过一次,上面的方法不起作用,我无法杀死任何 PID)

      $ ps auxw | grep post
      

      看到了大量的 postgres 进程,然后我 sudo kill &lt;PID&gt;

      现在一切正常。

      【讨论】:

      • 为什么要通过自制软件和 Postgres.app 安装 postgres?
      【解决方案13】:

      猜测是,其他东西占用了 5432 端口,因此应用程序选择在 5433 上运行。

      为什么不直接连接到端口 5433 上的 Pg,如果它正在运行的话?您有一个 /tmp/.s.PGSQL.5432 套接字文件,因此您可以使用 psql -p 5433 进行 UNIX 域套接字连接。它还将侦听与 TCP/IP 相同的端口,因此您可以将psql -h localhost -p 5433 用于 TCP/IP,并让您的应用连接到端口 5433 而不是 5432。

      更改您的.psqlrc 以将新端口设置为默认端口,您可以忘记它不在默认端口上。

      【讨论】:

      • 此时每个选项都值得探索,但这对我不起作用。我现在计划重新安装操作系统,因为我无法补救。
      【解决方案14】:

      在尝试将 postgresql 与 rails 一起使用时,我遇到了类似的问题。更新我的 Gemfile 以使用新版本的 gem pg 为我解决了这个问题。 (gem pg 版本 0.16.0 有效)。在 Gemfile 中使用:

      gem 'pg', '0.16.0'
      

      然后运行以下命令来更新 gem

      bundle install --without production
      bundle update
      bundle install
      

      【讨论】:

        【解决方案15】:

        我的突然启动失败,查看 Console.app 时看到:

        com.heroku.postgres-service: 
        FATAL:  could not create shared memory segment: Cannot allocate memory
        DETAIL:  Failed system call was shmget(key=5432001, size=3874816, 03600).
        HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMALL.  To reduce the request size (currently 3874816 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
        The PostgreSQL documentation contains more information about shared memory configuration.
        

        事实证明 Postgres 无法启动,因为我运行了 Wireshark(和 X11)。在我退出 Wireshark 后它运行良好。

        祝你好运!

        【讨论】:

        • 我也有 postgres.app 在 X11 运行时无法正常启动,杀死 X11 并重新启动应用程序再次修复它。神秘的问题。
        【解决方案16】:

        我解决了这个问题

        1. 通过在 CL 中使用“netstat”来识别端口 5432 上运行的内容,这是 postgreSQL 而不是 Postgres
        2. 我找到了包含 postgreSQL 的目录,即 root/Library/PostgreSQL
        3. 我确保应用程序的某个时刻没有通过 Activity Monitor 运行
        4. 然后我删除了文件夹并重新启动!一切都很好!

        【讨论】:

          【解决方案17】:

          不知何故,我完全忘记了这个套接字文件会因为点而被隐藏。如果要检查套接字是否确实存在,请确保使用ls -A /tmp/.s.PGSQL.5432

          【讨论】:

            【解决方案18】:

            您很可能安装了 PostgreSQL,然后将其删除并重新安装。 PostgreSQL 通常使用端口 5432,但如果不可用,则会增加到下一个可用端口,在本例中为 5433。因此,您可能在第二次安装时选择了此端口。

            我认为你应该检查文件:

            /etc/services

            并根据您的预期端口号调整下面的行:

            postgresql 5432/udp #PostgreSQL 数据库

            postgresql 5432/tcp #PostgreSQL 数据库

            在此之后,您应该重新启动计算机(最简单的方法)。

            【讨论】:

              【解决方案19】:

              我也有同样的问题:

              psql:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/tmp/.s.PGSQL.5432”上的连接?

              在我的情况下,它是我的 mac 上损坏的主机文件。我失踪了:

              127.0.0.1 本地主机

              一种快速简便的检查方法是打开终端并输入:

              ping 本地主机

              或:

              scutil -r 本地主机

              更多信息here 希望对您有所帮助。

              【讨论】:

                【解决方案20】:

                Netstat、ps aux 等...没有显示 5432 正在使用中。检查/图书馆。发现 PG9.6 旧安装仍然存在。 rm -rf 并砰的一声。版本 11 运行良好。

                【讨论】:

                  【解决方案21】:

                  我对这个问题失去了理智!我一直在跑

                  lsof -i | grep 5432

                  什么都没有出现! 最后我使用 sudo 运行它,然后出现了一个 potgres 客户端。 因此,如果其他人尝试过 lsof 却无处可去,请使用 sudo 尝试一下。

                  sudo lsof -i | grep 5432

                  然后

                  sudo kill

                  【讨论】:

                    【解决方案22】:

                    同样的问题也发生在我身上。一段时间以来,我一直在运行 Postgres.app 9.2.4.1。当我将 Mac OS X 更新到 10.8.5 时,强制重启后它不再工作了。我尝试了几件事,包括更新到 9.2.4.3,但在再次重启后都没有工作。

                    我必须打开文件 /Users/$USER/Library/Application Support/Postgres/var/postgresql.conf 并:

                    1. 取消注释行unix_socket_permissions = 0777
                    2. 取消注释并调整行unix_socket_directory = '/tmp'

                    重启后,Postgres.app 运行良好。

                    【讨论】:

                      【解决方案23】:

                      一个名为“postmaster.pid”的文件(在我的 $PGDATA 目录中)阻止了 postgresql 启动。这是一个僵尸文件,10 天前放在那里,当我残酷地关闭计算机(拔掉插头,字面意思)时,没有清理过程有机会删除该文件。

                      【讨论】:

                        【解决方案24】:

                        除了所有有用的答案,您可能还想看看官方页面说明: postgressapp.com/documentation/remove.html

                        【讨论】:

                          【解决方案25】:

                          我遇到了同样的问题,我的问题是由我遇到的一些配置问题引起的。清除用户配置并在 brew 中重新安装 postgres 对我有用!

                          brew uninstall postgresql
                          rm -rf /usr/local/var/postgres

                          【讨论】:

                          • 这是我的问题,Postgres 从终端静默运行,安装应用程序无法连接到端口 5432
                          【解决方案26】:

                          对于那些使用 mac 的人来说,这段代码对我来说就像魅力一样。

                          sudo pkill -u postgres
                          

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-11-22
                            • 2020-03-15
                            • 2019-12-23
                            • 2016-12-06
                            • 2023-02-12
                            • 1970-01-01
                            • 2021-11-20
                            相关资源
                            最近更新 更多