psql中的错误“psql: error: could not connect to server”的常见原因
现象
1 2 3 4 | [pgsql@lhrpg ~]$ psql psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/postgresql/pgdata/.s.PGSQL.5433"? |
原因
1)postgresql 没有启动,可以通过 ps -ef|grep -i postgres 确认
2)postgresql 根据 postgresql.conf 中的参数 unix_socket_directory 生成socket文件,该文件不在/postgresql/pgdata/下
3)检查postgresql用户的环境变量是否配置正确,例如PGHOST参数
对应解决办法
1)启动postgresql
2)使用psql时指定 unix_socket_directory , 如下:
1 2 3 4 5 6 7 8 9 10 | [pgsql@lhrpg tmp]$ psql -h /postgresql/pgdata psql (13.2) Type "help" for help. postgres=# -- 或者配置PGHOST环境变量也可以 export PGHOST=/postgresql/pgdata psql |
或者修改unix_socket_directory参数后,重启PG服务器。
PGHOST默认是主机名或IP地址,如果配置成一个目录,那么psql登陆的时候会去该目录下寻找socket文件,若找不到,则会报错,有关socket套接字文件参考:https://www.xmmup.com/pgzhongdetaojieziwenjian.html