无法连接到通过brew服务运行的Postgres服务器

时间:2016-09-26 19:00:35

标签: macos postgresql homebrew

我一直在寻找解决方案,找不到合适的解决方案。

我在MacBook中使用brew(brew services list)安装了postgres,我目前正在使用brew服务运行它(psql将postgres显示为正在运行的服务)。但是,当我尝试运行mysqldump db_name > backup-file.sql 时,我收到以下错误。

  

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

任何人都已经解决了类似的问题?

14 个答案:

答案 0 :(得分:61)

我遇到了同样的错误,我通过删除进程pid文件修复了它:

rm -f /usr/local/var/postgres/postmaster.pid

答案 1 :(得分:35)

我今天遇到了这个问题。 postgres停止接受连接虽然自制软件认为它正在运行。

为了解决这个问题,我跑了,

brew services restart -vvv postgresql

此命令的输出

==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Generated plist for postgresql:
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
     <key>KeepAlive</key>
     <true/>
     <key>Label</key>
     <string>homebrew.mxcl.postgresql</string>
     <key>ProgramArguments</key>
     <array>
       <string>/usr/local/opt/postgresql/bin/postgres</string>
       <string>-D</string>
       <string>/usr/local/var/postgres</string>
     </array>
     <key>RunAtLoad</key>
     <true/>
     <key>WorkingDirectory</key>
     <string>/usr/local</string>
     <key>StandardErrorPath</key>
     <string>/usr/local/var/log/postgres.log</string>
   </dict>
   </plist>

然后我想,嗯,也许这个日志文件中有一些东西,

tail -n 10 /usr/local/var/log/postgres.log

果然,

[4826] FATAL:  lock file "postmaster.pid" already exists
[4826] HINT:  Is another postmaster (PID 1489) running in data directory "/usr/local/var/postgres"?

所以,我删除了那个文件

rm /usr/local/var/postgres/postmaster.pid

一切都重新开始了。

答案 2 :(得分:9)

我会在这里结合Wilson和Grasshopper的两个答案。

您可以使用brew services list检查plist文件中的postgres服务,找到该文件的位置,然后在您喜欢的编辑器中打开它。

您应该会看到StandardErrorPath的值列为:

<key>StandardErrorPath</key>
<string>/usr/local/var/log/postgres.log</string>

然后你应该使用tail -n 100 /usr/local/var/log/postgres.log

拖尾日志文件的末尾

在我的情况下,错误如下:

  

2017-12-06 11:51:16.078 GMT [85476]致命:锁定文件“postmaster.pid”已存在   2017-12-06 11:51:16.078 GMT [85476]提示:是否有另一位邮政局长(PID 601)在数据目录“/ usr / local / var / postgres”中运行?

这是因为我必须硬关闭我的Mac并且postgres没有机会清理PID文件。只需删除PID文件rm /usr/local/var/postgres/postmaster.pid并启动postgres brew services start postgresql

即可

警告:除非您确定postgres未运行,否则不要删除此PID文件。您可以通过运行brew services stop postgresql然后等待brew services list的结果显示posgres处于停止状态来执行此操作。

答案 3 :(得分:7)

就我而言,postmaster.pid文件甚至都没有。我可以通过升级postgres使其工作。

brew update
brew upgrade

然后,因为我将主要版本从10升级到了11,所以我还必须运行以下命令:

brew postgresql-upgrade-database

(来源https://github.com/facebook/react-native/issues/18760#issuecomment-410533581

答案 4 :(得分:5)

问题 - macOS 升级后 Postgres 无法运行

我刚刚升级到最新的 macOS (Big Sur)。

使用 postgresql 的本地实例作为数据库的我的节点应用程序由于此错误而无法启动:Error: connect ECONNREFUSED 127.0.0.1:5432

显然 postgresql 不再在我的机器上正常运行。

运行 brew services list 显示 postgresql 的错误:

Name          Status  User  Plist    
postgresql    error   ***** /Users/*****/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

解决方案 - 升级 Postgres

为了解决这个问题,我使用以下命令升级了 postgresql

$ brew services stop postgresql
$ brew postgresql-upgrade-database # may need to `rm-rf /usr/local/var/postgres.old` first
$ brew services start postgresql

答案 5 :(得分:3)

我从版本点击安装postgresql93时遇到了同样的错误。 检查brew services list~/Library/LaunchAgents/homebrew.mxcl.postgresql93.plist)输出中指示的.plist文件,我发现以下消息:

  

致命:数据目录&#34; / usr / local / var / postgres&#34;有团体或世界访问权   详细信息:权限应为u = rwx(0700)。

这让我得到了这个答案:data directory "/usr/local/var/postgres" has wrong ownership

运行sudo chmod -R 700 /usr/local/var/postgres后,我遇到了另一个错误:

  

致命:无法打开目录&#34; pg_tblspc&#34;:没有这样的文件或目录

然后导致我:`pg_tblspc` missing after installation of latest version of OS X (Yosemite or El Capitan)

运行mkdir /usr/local/var/postgres/pg_tblspc/群集成功启动后。

答案 6 :(得分:2)

对我有用的是删除/usr/local/var/postgres/文件夹,然后再次卸载并安装postgres

答案 7 :(得分:2)

如果您安装了多个版本的postgresql。下面提到的命令将完成删除进程id(pid)并重新启动它的工作。只需确保选择正确的版本即可。

rm -f /usr/local/var/postgresql@9.6/postmaster.pid

brew services restart postgresql@9.6   

也请参考Eric Corner的答案,以确认问题是否与日志文件中的“锁定文件postmaster.pid已存在”有关。

答案 8 :(得分:1)

如果您的 postgres.log 文件包含“找不到图像错误”,那么您可能需要重新安装 postgresql:

brew reinstall postgresql

答案 9 :(得分:0)

使用命令

更新
  brew postgresql-upgrade-database

如果您遇到以下错误 找不到命令“ brew” ,但可以安装以下命令: sudo apt安装linuxbrew-wrapper

然后使用命令

安装
 sudo apt install linuxbrew-wrapper

答案 10 :(得分:0)

就我自己而言,postgres.log文件包含此HINT: Is another postmaster already running on port 5432? If not, remove socket file "/tmp/.s.PGSQL.5432" and retry.。删除套接字文件并重新启动后,一切正常。请注意,这是一个隐藏文件,将无法通过窗口浏览器看到。删除应通过命令行完成。

答案 11 :(得分:0)

您可能会看到libssl / libcrypto版本的冲突。

brew services start postgres日志给了我nada,但手动启动pg_ctl -D /usr/local/var/postgres start指向:

/.../openssl/lib/libcrypto.1.0.0.dylib中缺少定义_RAND_cleanup

拍摄地点:

brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t

# and then either brew link openssl@1.0.2t or symlink the required files to current openssl
ln -s /usr/local/Cellar/openssl/openssl@1.0.2t/lib/libcrypto.1.0.0.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
ln -s /usr/local/Cellar/openssl/openssl@1.0.2t/lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

答案 12 :(得分:0)

如果所有其他答案都不起作用...

我看到了同样的消息和接受的答案,正在运行

Id = a3e6a543-2aee-4ffe-a36a-a53k95921998, Tag = HttpMultipartParser.MultipartFormDataParser.ParseStreamAsync, Length = 530 bytes

没用。也没有

rm -f /usr/local/var/postgres/postmaster.pid 在我记得我安装了特定版本之后。

我做了一个 rm -f /usr/local/var/postgres@9.6/postmaster.pid 并看到:

cat /usr/local/var/log/postgresql@9.6.log
FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 1231) running in data directory "/usr/local/var/postgresql@9.6"?

**思考的脸**

关闭 iOS 模拟器。 Postgres 自行重启。

这是在台式机上,我们昨天断电了,所以根据其他答案,我怀疑根本原因是硬关机而没有给事情清理机会。

答案 13 :(得分:0)

我的问题是到我的数据库的开放连接。