我正在用头撞墙。已经 4 天了。但是 psql 无法连接。
我们有一个 Greenplum 数据库的小数组。其中,我们有主节点。当我尝试使用 psql 实用程序时
收到此错误:
[gpadmin@master gpseg-1]$ 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"?
我们尝试过
关于搜索 postmaster.pid 文件。
我们已将其删除。但错误仍然存在。
最佳答案
使用类似 ( netstat -ln; ps -ef ) | 的命令egrep '(postgres)|(postmaster)|(5432)'
尝试确定 postgres 服务器的实例是否正在运行。
如果 postmaster 未运行,请删除 postmaster.pid 文件并重新启动数据库。虽然我不使用 Greenplum 数据库,但我看到说明如下:Starting and Stopping the Greenplum Database.在确保数据库未运行的情况下,请勿删除 postmaster.pid 文件,并注意,在不启动数据库的情况下删除 postmaster.pid 文件是没有意义的。
明智的做法是打开您的 postgresql.conf 文件并查看 listen_addresses、端口、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
等工具可以与 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
命令的用户添加到有权访问套接字文件的组中。 (请记住,更改组成员身份后请注销并重新登录。)
虽然该页面似乎不一定与此问题直接相关,但请考虑 Accessing the Database根据需要提供帮助。
关于postgresql - Greenplum数据库:psql: could not connect to server: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276909/