OS X 上的 Postgresql 安装问题

OS X 上的 Postgresql 安装问题

我使用 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,所以不太清楚该去哪里找。有什么建议吗?

答案1

这意味着 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 启动

这应该会让你走上正确的道路。

答案2

在我看来,你正试图在当前用户帐户下运行 PostgresSQL。我不知道 PostgreSQL 的 fink 属性,但相关守护进程应该在专用用户帐户下运行(比如说PostgreSQL 的例如)。

首先确定 PostgresSQL 存储其数据和配置文件的数据目录。您的错误消息似乎表明这可能是“/Library/PostgreSQL/8.4/data”。此目录应该已经属于PostgreSQL 的-user 并赋予他 rwx 权限。我猜 Fink 已经创建了它,所以请查看安装日志。

查看此目录(您可能需要 su/sudo,因为您可能没有足够的权限使用控制台用户执行此操作)。如果有一些文件,例如 postgresql.conf、一堆 pg_* 和一些其他文件,都属于PostgreSQL 的,数据目录似乎没问题,否则调用以下命令(替换二进制路径,PostgreSQL 的-user 和数据路径与您的系统值,有关更多选项请参阅 man initdb):

sudo -u postgres /usr/local/pgsql/bin/initdb  -D /Library/PostgreSQL/8.4/data

它是重要的在这里以 postgres 用户身份执行 sudo,因为运行 postgres 守护进程的用户帐户必须具有足够的访问权限。

此外,您还必须使用 sudo 启动守护进程(这稍后应由 lauchctl-entry 或类似程序来处理),因此:

sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /Library/PostgreSQL/8.4/data

您可以随时重新创建数据目录,但请务必进行备份并且不要在 postgres 仍在运行时覆盖它。

答案3

您可以使用以下命令检查 Postgresql 是否正在运行并监听:

lsof -i |grep LISTEN

答案4

听起来好像你没有启动服务器,也可能没有运行初始化数据库

但是,如果你有更多麻烦,在 Mac OS X 上安装 postgresql 的最简单(也是 postgresql 推荐的)方法是通过企业数据库.它甚至可以很好地处理多个版本的安装。

相关内容