Не удается соединить PostgreSQL с psql - неправильный UNIX-Domain-Socket - PullRequest
0 голосов
/ 17 ноября 2018

Я использую 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 голосов
/ 17 ноября 2018

Почему вы меняете его в systemd и не используете конфигурационный файл PostgreSQL?Это что-то вроде CentOS?

В любом случае - вы можете запустить сервер на любом понравившемся порту или запустить несколько экземпляров сервера одинаковых или разных версий на разных портах.В этом случае, хотя вам нужно указать psql, какой порт использовать.

Вы можете установить переменную среды (PGPORT), укажите ее с помощью -p в командной строке или в файле .psqlrc,Подробнее см. руководства .


Редактирование в ответ на комментарии:

Если вы хотите установить PGPORT для psql, сделайте это в настройках оболочки пользователя по умолчаниюили в / etc / bash ... или эквивалентном.Конечно, вы могли бы заменить psql псевдонимом, используя свой пользовательский порт, или перекомпилировать сам бинарный файл, если хотите.

Я не уверен, что это очень полезно с точки зрения безопасности.Кажется маловероятным, что кто-то может запускать локальные процессы на вашем компьютере, получил доступ к вашему паролю пользователя postgres, но недостаточно умен, чтобы увидеть, на каком порту работает сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...