无法将PostgreSQL与psql连接-错误的UNIX域套接字

时间:2018-11-17 12:22:37

标签: postgresql centos

我正在运行CentOS 7.5,无法设置PostgreSQL。 如果我以用户postgres的身份登录并输入psql postgres,则会收到以下错误消息:

psql: Could not connect to server: no such file or directory
does the server run locally and accepts connections on Unix-Domain-Socket "/var/run/postgresql/.s.PGSQL.5432"

但是,我将端口更改为5543(在etc/systemd/system/postgresql.service中通过将/lib/systemd/system/postgresql.service作为[Service]并设置了Environment=PGPORT=5543来实现)。请注意,您不应直接在/lib/中对其进行更改,因为这将被覆盖。

因此,服务器查找错误的UNIX-Domain-Socket,但未找到一个(因为它不存在),但是根据5543,确实存在用于正确端口sudo netstat -nlp的套接字:

5486/postgres /var/run/postgresql/.s.PGSQL.5543

postgresql.service正在根据systemctl status postgresql.service

运行

感谢任何建设性的帮助。

1 个答案:

答案 0 :(得分:1)

为什么要在systemd中更改它而不使用PostgreSQL的配置文件?那是CentOS吗?

无论如何-您可以在所需的任何端口上运行服务器,或在各种端口上运行相同或不同版本的多个服务器实例。在这种情况下,尽管您需要告诉psql使用哪个端口。

您可以设置环境变量(PGPORT,在命令行或-p文件中使用.psqlrc进行指定。有关详细信息,请参见the manuals


根据评论进行编辑:

如果要为psql设置PGPORT,请在用户的外壳程序默认值或/ etc / bash ...或等效目录中进行设置。当然,您可以使用自定义端口将psql替换为别名,也可以根据需要重新编译二进制文件本身。

从安全角度来看,我不确定这是否真的有用。似乎不太可能有人在您的计算机上运行本地进程,已经获得了您的postgres用户密码的访问权限,但不够聪明,无法查看服务器在哪个端口上运行。