由于其他答案解决了其他选择,我想我可以在Lion上提供关于Mac OS X Server的一些信息。我遇到了非常类似的问题 - 在我的情况下,即使-h localhost
没有工作,因为PostregSQL中的网络被禁用,这在很多情况下都是非常好的主意。 Mac OS X Server的事情是它通过launchd
启动PostgreSQL服务器。
一些提示,你出去转转:
serveradmin
服务:postgres
launchd
配置文件:/System/Library/LaunchDaemons/org.postgresql.postgres.plist
- 数据库文件夹:
/var/pgsql
- 套接字文件夹:
/var/pgsql_socket
那CON配置文件将覆盖可在数据库文件夹下的postgresql.conf
中找到的几个配置指令。尤其是这两个:
unix_socket_group
unix_socket_permissions
您可以找到_postgres
帐户用于运行服务器,一切都还可以访问如活跃的用户是_postgres
组的成员。
通过运行dscl . -read /Groups/_postgres GroupMembership
你可以看到,默认情况下该组有以下成员:_devicemgr
_calendar
_teamsserver
_www
我想你有两个选择。将自己添加到_postgres组或更改launchd
配置plist文件。后者只是纯文本编辑...但要小心安全性,因为这样你就可以打开Server来满足你改变的标准(见最后一段)。
前者可以通过Server.app
或通过dscl
命令行实用程序完成。第一个选项可能不需要添加任何内容。只要确保您可以看到系统帐户(查看 - >隐藏/显示系统帐户)。我是那种CLI迷的所以这应该将用户添加到_postgres
组:
sudo dscl . -append /Groups/_postgres GroupMembership $USER
当然是你自己的帐户下运行,那么因为你给访问你的Mac OS X Server数据库,你要小心后端。所以要么保证你的账号安全,要么创建单独的用户来操纵你的数据库,或者不要在那里保存任何私人信息。
对于'-h'开关+1,对于本地连接也是如此(在开始处正斜杠)。 Unix域套接字的路径由'postgresql'中的['unix_socket_directory'](http://www.postgresql.org/docs/current/static/runtime-config-connection.html#GUC-UNIX-SOCKET-DIRECTORY)属性确定.conf'。 –
'unix_socket_directory'属性可以是空的(我从来没有见过它设置),在这种情况下,它可能默认为/ tmp /。 – wildplasser
感谢您的提示 - 我正在使用来自postgres的标准OS X软件包,它解释了unix域套接字设置。 – Wells