使用类似命令( netstat -ln; ps -ef ) | egrep '(postgres)|(postmaster)|(5432)'
来尝试确定 postgres 服务器的实例是否正在运行。
如果 postmaster 未运行,请删除postmaster.pid文件并重新启动数据库。虽然我不使用 Greenplum 数据库,但我看到这里有说明: 启动和停止 Greenplum 数据库。 不要在没有确保数据库没有运行的情况下删除postmaster.pid文件,并注意在不启动数据库的情况下删除 postmaster.pid 文件是没有意义的。
打开您的postgresql.conf文件并查看listen_addresses、port、unix_socket_directory、unix_socket_group和unix_socket_permissions设置是否是问题的根源可能是明智的。
由于引用的错误消息特别提到了套接字文件,因此请仔细查看unix_socket_directory、unix_socket_group和unix_socket_permissions。
如果unix_socket_directory指向/tmp以外的其他地方,则存在各种解决方法。
或者,假设服务器正在运行,可能会尝试在不查看postgresql.conf文件的情况下定位套接字文件,但这可能会使解决权限、端口等问题变得有点困难。像locate
,find
等工具可以与 root 用户一起使用sudo
或由root用户使用。
$ sudo find /tmp /var -name .s.PGSQL.5432
假设.s.PGSQL.5432文件问题的位置是问题的根本原因,在psql
命令行上指定套接字文件位置可能是最直接的解决方法。例如,如果 *.s.PGSQL.5432 文件在/var/pgsql_socket目录中,就像在某些系统上一样,试试这个,但是,当然,使用.s.PGSQL.5432所在的实际目录:
$ pgsql -h /var/pgsql_socket
如果.s.PGSQL.5432文件位于/tmp中,则问题更可能是权限之一,建议查阅postgresql.conf文件,并且可能必须将尝试该psql
命令的用户添加到有权访问套接字文件。(请记住,更改组成员身份后注销并重新登录。)
尽管该页面似乎不一定与此问题直接相关,但请根据需要考虑访问数据库帮助。