如何在OSX Lion上安装PostgreSQL 9.1

时间:2012-02-19 22:56:09

标签: osx-lion postgresql

我从官方网站下载了PostgreSQL并运行了.dmg安装程序。之后我下载了pgadmin3,我确实能够连接到数据库。

当我运行'psql'时,我收到以下错误:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting

经过几个小时的谷歌搜索,我读到了一些$ PATH问题,所以我把它放到我的.bashrc中:

export PATH=/Library/PostgreSQL/9.1/bin:$PATH

但是,这并不能解决上述错误。经过几个小时的谷歌搜索,我试图运行'psql -l localhost -U postgres'。这给出了另一个错误:

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

在进行了一些谷歌搜索之后,我尝试编辑/Library/PostgreSQL/9.1/data/pg_hba.conf并用'trust'替换所有出现的'md5'。

然后我将用户更改为postgres并执行'pg_ctl stop'和'pg_ctl start',切换回我自己的用户并尝试再次连接,没有运气。

以下是更多信息:

[~]$ which psql
/Library/PostgreSQL/9.1/bin/psql

ps aux | grep postgres
postgres       19022   0.0  0.0  2446096    484   ??  Ss   11:31PM   0:00.01 postgres: stats collector process   
postgres       19021   0.0  0.0  2486532   1776   ??  Ss   11:31PM   0:00.01 postgres: autovacuum launcher process   
postgres       19020   0.0  0.0  2486400    576   ??  Ss   11:31PM   0:00.03 postgres: wal writer process   
postgres       19019   0.0  0.0  2486400    820   ??  Ss   11:31PM   0:00.05 postgres: writer process   
postgres       19017   0.0  0.0  2446096    356   ??  Ss   11:31PM   0:00.01 postgres: logger process   
postgres       19015   0.0  0.1  2486400   8216 s001  S    11:31PM   0:00.17 /Library/PostgreSQL/9.1/bin/postgres

sudo find / -name .s.PGSQL.5432
No file was found?!?

更新1: 在/etc/sysctl.conf中,我添加了安装程序自述文件建议的值:

kern.sysv.shmmax=1610612736
kern.sysv.shmall=393216
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.maxprocperuid=512

在这些设置之前,安装程序退出时出现错误,然后出现向导并安装postgres(再次使用pgadmin3工作,所以我假设数据库运行正常)。

2 个答案:

答案 0 :(得分:7)

在主进程上运行lsof以完成所有这些操作。在你的情况下它是19015年(用我的PID显示):

> sudo lsof -p 286 | awk '$5 == "unix" && $NF ~ /\// { print $NF }' 
/tmp/.s.PGSQL.5432

你可以不用awk,但基本上它正在获取postgres正在监听的UNIX套接字。从那里,您可以使用-h选项psql(但仅包括目录)。

> psql -h /tmp template1                                                                                                                                                                                                                                                            
template1=# \q

如果这不起作用,您可以检查lsof输出以显示它实际正在侦听的TCP端口,如果它不是5432,请使用-p选项postgres

答案 1 :(得分:1)

如果您能够通过 pgadmin3 连接到数据库,那么您的数据库正在运行。

(1)我通过运行 netstat -an |进行验证grep 5432 在命令行上,作为偏执检查。你正在营业,即如果你在下面得到这个,你实际安装了Postgresql:

tcp4 0 0 * .5432 LISTEN
tcp6 0 0 * .5432 LISTEN
ffffff80133bfed8 stream 0 0 ffffff8013be8000 0 0 0 /tmp/.s.PGSQL.5432

(2)我自己说,我发现只运行 psql 就会得到你的 psql 错误信息。我不得不跑

psql -h 127.0.0.1 -p 5432 [-d database] -U postgres

连接数据库。换句话说,我必须明确指定IP和端口。由于您能够运行 psql 并获得非连接错误消息,因此操作系统了解psql是一个命令,并且您没有路径问题。