我正在尝试在我的mac(10.7 Lion)上为本地的rails应用程序设置postgres。
我安装了postgresapp并启动了它,我现在在我的状态栏中有一只大象告诉我postgres正在运行。
我可以通过:
来实现psql -h localhost
但是,当我只是运行psql
时,我收到此错误:
psql:无法连接到服务器:权限被拒绝是服务器 在本地运行并接受Unix域套接字上的连接 “/var/pgsql_socket/.s.PGSQL.5432”?
我说这个:
PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
在~/.bashrc
并打开一个新终端。但没有骰子。
当我运行which psql
时,我得到/usr/bin/psql
不确定该怎么做..我仍然是unix系统的新手。我应该将/usr/bin/psql
符号链接到/Applications/Postgres.app/Contents/MacOS/bin/psql
吗?
答案 0 :(得分:4)
此错误非常具体,可以告诉您错误,但如果您是unix的新手,那么它就不那么明显了。
我在这里给出了类似的答案:
Can not connect to local PostgreSQL
问题
您无法访问("套接字")文件/var/pgsql_socket/.s.PGSQL.5432
要修复:
检查您是否至少有权访问该目录。在命令行上使用:
ls -l /var/pgsql_socket/.s.PGSQL.5432
这将导致"权限被拒绝"如果不。您可能已经有权访问此内容,而且它只是您未获得许可的套接字文件。
套接字文件本身是由postgresql在启动时创建的。
追踪postgres的主要配置文件(postgresql.conf
)。
这本身可能很难,我是一个Linux用户而不是OSX。你可能需要花一些时间在谷歌上。此链接相当陈旧,但如果您遇到问题,可能会让您走上正轨。 http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
一旦你找到它,找到postgresql.conf中的行,他们应该说:
unix_socket_directory = '/var/pgsql_socket' # dont worry if yours is different
#unix_socket_group = '' # default is fine here
unix_socket_permissions = 0777 # check this one