macos - psql : could not connect to server: No such file or directory

标签 macos postgresql osx-mavericks

今天下午当我试图启动本地 Postgres 服务器时,收到以下错误消息:

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"?

我尝试按照以下问题的最高评分答案中的说明进行操作:psql: could not connect to server: No such file or directory (Mac OS X) ;但是,文件 /usr/local/var/postgres/postmaster.pid 似乎不存在。

我在 OS X Mavericks 上运行。


我不完全确定这是否有助于缩小范围,但我昨晚做的最后一件事是尝试一个名为 Yasu (http://yasuapp.net/) 的 OS X 系统实用程序。我只能假设当它重新启动系统时,那就是出现问题的时候。

最佳答案

使用像 ( netstat -ln; ps -ef ) | 这样的命令egrep '(postgres)|(postmaster)|(5432)' 尝试确定 postgres 服务器的实例是否正在运行。

如果 postmaster 没有运行,删除 postmaster.pid 文件并重新启动数据库。请勿在未确保数据库未运行的情况下删除 postmaster.pid 文件,并注意在未启动数据库的情况下删除 postmaster.pid 文件是没有意义的。

最好打开你的postgresql.conf 文件并查看listen_addressesportunix_socket_directoryunix_socket_groupunix_socket_permissions 设置可能是问题的根源。

由于引用的错误消息特别提到套接字文件,请仔细查看 unix_socket_directoryunix_socket_groupunix_socket_permissions

如果 unix_socket_directory 指向的不是 /tmp ,则存在各种解决方法。

或者,假设服务器正在运行,人们可能会尝试在不查看 postgresql.conf 文件的情况下找到套接字文件,尽管这可能会使解决权限问题变得有点困难,端口等问题。 locatefind 等工具可以与 sudo 结合使用或由 root 用户使用.

$ sudo find /tmp /var -name .s.PGSQL.5432

假定 .s.PGSQL.5432 文件问题的位置是问题的根本原因,在 psql 命令行上指定套接字文件位置可能是最直接的解决方法。例如,如果 *.s.PGSQL.5432 文件位于 /var/pgsql_socket 目录中,因为它在某些系统上是这样的,试试这个,但是,当然,使用 所在的实际目录.s.PGSQL.5432 位于:

$ pgsql -h /var/pgsql_socket

如果 .s.PGSQL.5432 文件在 /tmp 中,那么问题很可能是权限之一,请查阅 postgresql.conf 文件被建议,并且可能必须将尝试 psql 命令的用户添加到有权访问套接字文件的组中。 (请记住,在更改组成员资格后注销并重新登录。)

关于macos - psql : could not connect to server: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355706/

相关文章:

mysql - 使用不同的密码加密数据库表中的各个行

postgresql - 有没有办法列出 PostgreSQL 服务器?

ios - 快速分离句子和问题的功能

java - 在 Restful 客户端中检索枚举的 PostgreSQL 类型

恢复模式下 osx 上的 Python 位置

php - 如何在 OS X 10.9 上使用 OpenSSL 编译 PHP?

每次在 OS X 10.9.3 上打开 XCode 4.6.3 都会崩溃

macos - 以非 root 用户身份从 Docker Ubuntu 容器内部调用 Mac 主机上的 Docker 时出现权限被拒绝错误

objective-c - 收集系统事件信息

java - 有人可以告诉我为什么这个java代码在Mac(或unixlike)和Windows上运行时得到不同的答案吗