Главная » Error » Error connect to postgresql

Error connect to postgresql

PostgreSQL, как сказано на её официальном сайте, это самая продвинутая в мире реляционная база данных с открытым исходным кодом.

Использование PostgreSQL

Как запустить службу PostgreSQL. Как управлять службой PostgreSQL

Запуск службы PostgreSQL:

1
sudo systemctl start postgresql.service

Остановка службы PostgreSQL:

1
sudo systemctl stop postgresql.service

Добавление службы PostgreSQL в автозагрузку:

1
sudo systemctl enable postgresql.service

Удаление службы PostgreSQL из автозагрузки:


1
sudo systemctl disable postgresql.service

Для просмотра состояния процесса PostgreSQL:

1
systemctl status postgresql.service

Альтернативный вариант запуска службы для работы с определённой базой данных следующий:

1
sudo -u ПОЛЬЗОВАТЕЛЬ postgres -D /ПУТЬ/ДО/БАЗЫ/ДАННЫХ

Например:

1
sudo -u postgres postgres -D /var/lib/postgres/data

Ошибка PostgreSQL

$ 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

Проблемы с подключениями клиентов

Хотя ошибки подключений, возможные на стороне клиента, довольно разнообразны и зависят от приложений, всё же несколько проблем могут быть связаны непосредственно с тем, как был запущен сервер. Описание ошибок, отличных от описанных ниже, следует искать в документации соответствующего клиентского приложения.

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

Это общая проблема “я не могу найти сервер и начать взаимодействие с ним”. Показанное выше сообщение говорит о попытке установить подключение по TCP/IP. Очень часто объясняется это тем, что сервер просто забыли настроить для работы по протоколу TCP/IP.

Кроме того, при попытке установить подключение к локальному серверу через доменный сокет Unix можно получить такое сообщение:

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Путь в последней строке помогает понять, к правильному ли адресу пытается подключиться клиент. Если сервер на самом деле не принимает подключения по этому адресу, обычно выдаётся сообщение ядра Connection refused (В соединении отказано) или No such file or directory (Нет такого файла или каталога), приведённое выше. Другие сообщения об ошибках, например Connection timed out (Таймаут соединения) могут сигнализировать о более фундаментальных проблемах, например, о нарушениях сетевых соединений.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован.

Adblock
detector