2

Я пытаюсь настроить базу данных PostGIS с помощью PostGreSQL 9.1 в Ubuntu 12.04. Я настроил базу данных, создал учетную запись пользователя "jay" без пароля, добавил пространственную функциональность в соответствии с разделом 2.5 здесь и установил мой pg_hba.conf для local :

# "local" is for Unix domain socket connections only
local   all             all                                     trust

Я могу подключиться к базе данных с помощью PGAdminIII, не требуя пароля для подключения, но соединение не удается, когда я пытаюсь подключиться через PostGIS или с QuantumGIS. Вот скриншот окна подключения в QuantumGIS:
PostGIS соединение

Рассматривая проблему немного, я наткнулся на этот пост, который заставил меня попробовать подключиться через терминал, используя psql -U jay -h localhost gis . psql меня пароль, я нажал Enter, потому что я не установил пароль, и он вернул psql: fe_sendauth: no password supplied . Я попытался снова, на этот раз предоставив свой пароль пользователя Ubuntu, который вернулся

psql: FATAL:  password authentication failed for user "jay"
FATAL:  password authentication failed for user "jay"

Затем я попытался установить пароль для jay с помощью ALTER USER и ввести этот пароль в командной строке, но это также не удалось. Я не могу подключиться. Тем не менее, я не могу понять, какие шаги по устранению неполадок предпринять дальше.

Есть идеи??

1 ответ1

5

PostgreSQL поддерживает два разных транспорта для соединений: сетевые сокеты TCP/IP и доменные сокеты unix. Они настроены с разными записями в pg_hba.conf.

Соединения сокетов домена unix являются local записями, а сокеты TCP/IP - записями host , hostssl и hostnossl согласно документации pg_hba.conf.

В этом случае весьма вероятно, что вы установили local для trust подключений, но оставили записи host TCP/IP как md5 . Если ваши инструменты PostGIS используют TCP/IP для localhost вместо unix-сокетов, они должны будут предоставить пароль. Некоторые клиентские библиотеки (например, PgJDBC) не поддерживают сокеты Unix, а некоторые программы по умолчанию используют TCP/IP, даже если их клиентская библиотека поддерживает сокеты Unix, поэтому вы не можете этим управлять.

Убедитесь, что у вас есть запись host для 127.0.0.1/32 с trust аутентификацией и выполните pg_ctl reload или перезагрузите / перезапустите Pg.

Кстати, пожалуйста, не используйте trust когда вы переходите в производство. Это нормально для локального доступа к тестовым базам данных без важных данных, но это все.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .