PostgreSQL 9.3 запрещает удаленное подключение от пользователя, несмотря на настройки pg_hba.conf / postgresql.conf

0

Я использую PostgreSQL 9.3 на Ubuntu 14.04 LTS. Это стандартный дистрибутив Postgres, доступный в apt. На разных форумах я нашел несколько потоков, которые указывают, что правильный способ разрешить удаленные psql-подключения к базе данных - добавить следующую строку в /etc/postgresql/9.3/main/pg_hba.conf:

host    all             all       0.0.0.0/0             md5

И установить это в /etc/postgresql/9.3/main/postgresql.conf:

listen_addresses = '*'

затем перезапустить базу данных («sudo service postgresql restart»)

Я сделал это и все еще получаю следующую ошибку при попытке подключиться к этой БД с другого сервера:

psql -h <the db host> -p 5433 -d the_db the_user
$> Password for user the_user:  
$> (I enter the pw)
$> psql: FATAL:  password authentication failed for user "the_user"
$> FATAL:  password authentication failed for user "the_user"

Обратите внимание, что пароль однозначно правильный, так как следующий код, выполненный на хост-компьютере БД, успешно вводит меня:

$>  psql -h localhost -d the_db the_user
$> Password for user the_user: 
$> (I enter the exact same pw as above)
$> psql (9.3.5, server 9.1.13)
$> Type "help" for help.
$> 
<the psql shell session begins>

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

Ник Z
источник
В дополнение к точке зрения giomasce, также убедитесь, что вы перезагрузили PostgreSQL после изменения pg_hba.conf.
Крейг Рингер,

Ответы:

2

В первом сеансе вы используете порт 5433, во втором - по умолчанию 5432. Вероятно, у вас установлено более одного кластера (возможно, они поставляются с другой версией пакета PostgreSQL). Я рекомендую вам отбросить кластеры, которые вы не используете, pg_dropclusterи убедиться, что вы подключаетесь к правильному.

(не забудьте перепроверить, прежде чем бросать вещи, если есть базы данных с достойной информацией внутри)

Джованни Масцеллани
источник
Чтобы проконтролировать это: действительно, вы были правы, и я подключался к неправильному экземпляру postgres. Запуск «sudo pg_lsclusters» показал, что я запускал 2 версии postgres (9.1 и 9.3) бок о бок на 5433 и 5432. Я перенес все свои данные на 9.3 (только с pg_dumpall) и удалил 9.1. Теперь я могу подключиться к своей установке 9.3 в соответствии с правилами, указанными в файле pg_hba.conf для этой установки
Nick Z