我正在运行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
感谢任何建设性的帮助。
答案 0 :(得分:1)
为什么要在systemd中更改它而不使用PostgreSQL的配置文件?那是CentOS吗?
无论如何-您可以在所需的任何端口上运行服务器,或在各种端口上运行相同或不同版本的多个服务器实例。在这种情况下,尽管您需要告诉psql使用哪个端口。
您可以设置环境变量(PGPORT
,在命令行或-p
文件中使用.psqlrc
进行指定。有关详细信息,请参见the manuals。
根据评论进行编辑:
如果要为psql设置PGPORT,请在用户的外壳程序默认值或/ etc / bash ...或等效目录中进行设置。当然,您可以使用自定义端口将psql
替换为别名,也可以根据需要重新编译二进制文件本身。
从安全角度来看,我不确定这是否真的有用。似乎不太可能有人在您的计算机上运行本地进程,已经获得了您的postgres用户密码的访问权限,但不够聪明,无法查看服务器在哪个端口上运行。