Содержание

Предыдущий раздел

psql - консольная утилита для работы с PostgreSQL

Следующий раздел

Не удается подключиться к базе данных (no pg_hba.conf entry for host "xxx.xxx.xxx.xxx"...)

Не удается подключиться к базе данных (could not connect to server: Connection refused)

$ psql -U my_login -h 10.0.0.101 postgres

psql: could not connect to server: Connection refused
    Is the server running on host "10.0.0.101" and accepting
    TCP/IP connections on port 5432?

Подобная ошибка возникает, если доступ к серверу ограничен файерволом или PostgreSQL не принимает подключение по указанному адресу/порту (10.0.2.15). Настройка файервола выходит за рамки тематики данного сайта, поэтому ниже приводится только решение проблемы, связанной с настройкой PostgreSQL.

Решение

Необходимо зайти на сервер по ssh и проверить статус СУБД командой:

$ sudo netstat -pant | grep postgres

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1439/postgres

Pезультат выполнения команды означает, что PostgreSQL принимает подключения по адресу 127.0.0.1 и порту 5432. Чтобы изменить настройки, понадобится отредактировать файл postgresql.conf

Найти местонахождение файла можно командой:

$ find / -name postgresql.conf 2> /dev/null

/etc/postgresql/9.2/main/postgresql.conf

Надо указать PostgreSQL, что необходимо принимать подключения по всем адресам:

listen_addresses = '*'

и перезагрузить СУБД:

$ sudo service postgresql restart

* Restarting PostgreSQL 9.2 database server                                                                                        [ OK ]

Теперь необходимо проверить настройки:

$ sudo netstat -pant | grep postgres

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      1492/postgres
tcp6       0      0 :::5432                 :::*                    LISTEN      1492/postgres

Теперь доступ к базе данных есть с любого адреса. Можно попытаться подключиться к базе данных:

$ psql -U my_login -h 10.0.0.101 postgres

Если сервер доступен, то будет получен доступ к базе данных postgres:

psql (9.2.1)
Type "help" for help.

postgres=#

либо можно получить другую ошибку:

psql: FATAL:  no pg_hba.conf entry for host "10.0.0.1", user "my_login", database "postgres", SSL on
FATAL:  no pg_hba.conf entry for host "10.0.0.1", user "my_login", database "postgres", SSL off

В этом случае поможет другой рецепт

Дополнительная информация

PostgreSQL Documentation: Connections and Authentication

comments powered by Disqus