我使用 Fink 在 os x 上安装 postgresql。当我尝试启动 psql 时,我得到:
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"?
我以前从未安装过 postgresql,所以我不确定在哪里看。有什么建议吗?
这意味着 PostgreSQL 守护程序没有运行。您需要找到守护程序的安装位置。默认情况下,它应该安装在 /usr/local/pgsql 中。如果存在,请检查是否存在 /usr/local/pgsql/data 目录。如果没有运行以下:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
然后,如果成功,运行
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data 开始
这应该让你走上正轨。
在我看来,您正试图在您当前的用户帐户下运行 PostgresSQL。我不知道 PostgreSQL 的 fink 属性,但相关的守护进程应该在专用用户帐户下运行(例如postgres)。
首先确定数据目录,PostgresSQL 在其中存储它的数据和配置文件。您的错误消息似乎说这可能是“/Library/PostgreSQL/8.4/data”。这个目录应该已经属于postgres用户并且对他有 rwx 权限。我猜 Fink 已经创建了它,所以请查看安装日志。
查看此目录(您可能需要 su/sudo,因为您可能没有足够的权限对控制台用户执行此操作)。如果有一些文件,例如。postgresql.conf,一堆 pg_* 和其他一些文件,都属于postgres,数据目录似乎没问题,否则调用以下(将二进制路径,postgres -user 和数据路径替换为您的系统值,请参阅 man initdb 了解更多选项):
在这里将 sudo 作为 postgres 用户很重要,因为 postgres 守护程序运行的用户帐户必须具有足够的访问权限。
此外,您必须使用 sudo 启动守护程序(这应该稍后由 lauchctl-entry 或类似的东西处理),所以:
您可以随时重新创建数据目录,但请务必进行备份,并且不要在 postgres 仍在运行时覆盖它。
您可以通过以下方式检查 Postgresql 是否正在运行和侦听:
lsof -i |grep LISTEN
听起来好像您没有启动服务器,并且可能还没有运行initdb
但是,如果您遇到更多麻烦,在 Mac OS X 上安装 postgresql 的最简单(也是 postgresql 推荐的)方法是通过EnterpriseDB提供的 GUI 安装程序。它甚至可以很好地处理安装多个版本。