
Ошибка PostgreSQL «Не удалось подключиться к серверу» может возникать по разным причинам. Часто достаточно перезапустить систему управления базами данных с открытым исходным кодом или настроить параметры TCP/IP.
Требования
- Облачный сервер под управлением Linux (CentOS 7 или Ubuntu 16.04).
- PostgreSQL установлен и запущен.
«Не удалось подключиться к серверу: No such file or directory»
Ошибка PostgreSQL «Не удалось подключиться к серверу: No such file or directory» обычно означает, что PostgreSQL не запущен. Однако на самом деле эта ошибка часто связана с проблемами с правами доступа.
Во-первых, используйте команду systemctl status postgresql, чтобы проверить статус PostgreSQL:
user@localhost:~# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: **active** (exited) since Thu 2017-03-23 21:34:03 UTC; 14s ago
Main PID: 24289 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/postgresql.service
Mar 23 21:34:03 localhost.localdomain systemd[1]: Starting PostgreSQL RDBMS...
Mar 23 21:34:03 localhost.localdomain systemd[1]: Started PostgreSQL RDBMS.
Mar 23 21:34:08 localhost.localdomain systemd[1]: Started PostgreSQL RDBMS.
Если статус активен, перезапустите PostgreSQL с помощью команды systemctl restart postgresql. Если статус неактивен, запустите PostgreSQL командой systemctl start posgresql.
Если перезапуск не устранил проблему, посмотрите разрешения каталога с путем /var/lib/postgresql/9.6/main. Номер версии 9.6 может отличаться в зависимости от вашей установки. Ожидается, что разрешения для папок установлены на «0700», а разрешения для файлов — на «0600». Это означает, что папки должны иметь разрешения на чтение, запись и выполнение, а файлы — на чтение и запись. Используйте команду ls по указанному выше пути для отображения текущих разрешений.
Если вы обнаружите, что разрешения отличаются, выполните следующие команды в командной строке:
sudo chown -R postgres:postgres /var/lib/postgresql/9.6/
sudo chmod -R u=rwX,go= /var/lib/postgresql/9.6/
Перезапустите PostgreSQL, как показано выше.
«Не удалось подключиться к серверу: Connection refused»
Другой вариант ошибки PostgreSQL — «Не удалось подключиться к серверу: Connection refused».
Сначала используйте команду systemctl-status postgresql, чтобы убедиться, что PostgreSQL запущен. Чтобы убедиться, что PostgreSQL запущен, вы также можете перезапустить его с помощью команды systemctl restart postgresql.
Если это не помогло, наиболее вероятной причиной ошибки является то, что PostgreSQL не настроен на разрешение TCP/IP соединений.
Чтобы исправить это, отредактируйте файл posgresql.conf. Его можно найти в одном из следующих путей к файлам, в зависимости от вашего дистрибутива Linux:
- Ubuntu 16.04: sudo nano /etc/postgresql/9.5/main/posgresql.conf
- CentOS 7: sudo nano /usr/pgsql-10/share/postgresql.conf
Проверьте конфигурацию listen_address. Чтобы разрешить TCP/IP соединения, она должна быть установлена на «0.0.0.0» (чтобы разрешить соединения со всех IP-адресов) или на конкретный IP-адрес сервера, к которому будет разрешено подключение.
Если этот параметр оставить пустым или установить значение localhost, PostgreSQL не будет разрешать внешние TCP/IP-соединения. Это также соответствует настройкам PostgreSQL по умолчанию.
PostgreSQL не сможет подключиться к серверу, если соединение заблокировано брандмауэром. Обратите внимание, что на все облачные серверы действует политика брандмауэра по умолчанию, которая управляется из панели облака.
- Ноу-хау