Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接

Eua*_*lar 9 postgresql homebrew osx-lion

对于Postbres的Homebrew安装,我遇到了常见的Mac OSX错误,

No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

这显然是由于系统上有多个安装.但是,通常的步骤并不能解决问题.

我可以成功启动Postgres并运行:

ps auxw | grep post
Run Code Online (Sandbox Code Playgroud)

回报..

euanmillar       847   0.0  0.0  2432768    588 s000  R+   11:19am   0:00.00 grep postgres
euanmillar       845   0.0  0.0  2439324    448   ??  Ss   11:19am   0:00.00 postgres:
stats collector process
euanmillar       844   0.0  0.0  2443176   1520   ??  Ss   11:19am   0:00.00 postgres:
autovacuum launcher process
euanmillar       843   0.0  0.0  2443044    544   ??  Ss   11:19am   0:00.00 postgres: wal writer process
euanmillar       842   0.0  0.0  2443044    584   ??  Ss   11:19am   0:00.00 postgres: writer process
euanmillar       841   0.0  0.0  2443044    596   ??  Ss   11:19am   0:00.00 postgres: checkpointer process
euanmillar       839   0.0  0.0  2443044   3616 s000  S    11:19am   0:00.02 /us
Run Code Online (Sandbox Code Playgroud)

所以它看起来像postgres正在运行.

我在postgresql.conf中注释了以下几行

port = 5432
unix_socket_directory = '/var/pgsql_socket'
unix_socket_permissions = 0777
Run Code Online (Sandbox Code Playgroud)

在var/pgsql_socket /我有一个隐藏文件.s.PGSQL.5432

我在这里尝试了许多帖子的解决方案.这一点特别相似:

https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why

但不同之处在于我确实有一个'/ var/pgsql_socket'目录,这个目录已经归结为每个人.我使用Homebrew完全删除并重新安装Postgres,但我仍有同样的问题.

小智 31

你需要删除postmaster.pid,它应该在以下路径中: /usr/local/var/postgres/postmaster.pid


cou*_*mas 14

对我来说,我删除了postmaster.pid /usr/local/var/postgres.把我弄好了.


Mat*_*sel 9

一个更简单的解决方案是找到套接字实际所在的位置与预期的位置.就我而言,我跑了:

$ locate PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432.lock
Run Code Online (Sandbox Code Playgroud)

然后将预期的套接字位置符号链接到实际的套接字位置.

$ ln -s /private/var/pgsql_socket/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)


Atm*_*tye 1

这不是 OS X 特定的问题。您需要清理您的 postgres 安装,然后再次重新安装。我在 ubuntu 12.04 上遇到过这个问题。在清理以前的安装时,您需要删除所有以 postgres 开头的软件包(postgresql、postgresql-common、postgresql-client 等),换句话说就是 postgres*。我没有使用过brew,使用过OS X Lion 上的port。我想等效的命令应该是sudo brew remove postgres*. sudobrew install postgresql 应该可以解决问题。

另外,如果您感觉服务器已经在运行,您可以尝试sudo -u postgres createuser。如果失败,您将需要重新安装。

但是,您的输出ps aux | grep post实际上是 grep 命令本身。不是正在运行的 postgres 服务器。

编辑:看起来以下链接可能有帮助https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why 如果是,那么这个问题可能是重复的。