我使用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之前,所以我不知道在哪里看。 有什么build议吗?
这意味着PostgreSQL守护进程没有运行。 你会想find守护进程的安装位置。 默认情况下,它应该安装在/ 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 start
这应该让你走上正轨。
在我看来,你正试图在你当前的用户帐户下运行PostgresSQL。 我不知道PostgreSQL的fink属性,但是相关的守护进程应该在专用的用户帐户下运行(比如说postgres )。
首先确定数据目录,其中PostgresSQL存储数据和configuration文件。 你的错误消息似乎是说这可能是“/Library/PostgreSQL/8.4/data”。 这个目录应该已经属于postgres -user并拥有rwx权限。 我猜Fink已经创build了它,所以请查看安装日志。
查看这个目录(你可能需要su / sudo,因为你的console用户可能没有足够的权限)。 如果有一些文件,例如。 postgresql.conf,一堆pg_ *和一些其他文件,都属于postgres ,数据目录似乎是好的,否则调用下面的代码(将binary-path, postgres -user和数据pathreplace为你的系统值,请参阅man initdb获取更多选项):
sudo -u postgres /usr/local/pgsql/bin/initdb -D /Library/PostgreSQL/8.4/data
在这里sudo作为postgres用户是非常重要的 ,因为postgres deamons运行的用户帐户必须具有权限访问权限。
而且,你将不得不用sudo启动deamon(以后应该通过lauchctl-entry或类似的东西来处理),所以:
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /Library/PostgreSQL/8.4/data
您始终可以重新创build数据目录,但是请确保进行备份,并且在postgres仍在运行时不要覆盖它。
你可以检查Postgresql是否正在运行并且正在监听:
lsof -i |grep LISTEN
这听起来好像你没有启动服务器,并可能没有运行initdb
如果你有更多的麻烦,那么在Mac OS X上安装postgresql的最简单的方法(postgresql推荐的方法)是通过EnterpriseDB提供的GUI安装程序。 它甚至可以很好地处理多个版本的安装。