Не могу прочитать и изменить оригинальный pg_hba.conf в PostgreSQL 12.

Вопрос или проблема

Я не могу подключиться к удалённому серверу ubuntu aws, на котором установлен postgresql. И я хочу подключиться с моего ПК к postgres на ubuntu, но не могу это сделать:

Не удалось подключиться к серверу:
FATAL: нет записи pg_hba.conf для хоста "xxx.xxx.xxx.xxx", пользователя "postgres", базы данных "postgres", SSL включен
FATAL: нет записи pg_hba.conf для хоста "xxx.xxx.xxx.xxx", пользователя "postgres", базы данных "postgres", SSL выключен

Я знаю, что мне нужно добавить

host all all all md5
или
host all all 0.0.0.0/0 trust
или
host all all 0.0.0.0/0 md5

но когда я хочу открыть pg_hba.conf из Putty, я выполняю sudo nano /etc/postgresql/12/main/bg_hba.conf, и вижу пустой список и внизу написано “[новый файл]”, но в /etc/postgresql/12/main/ я вижу этот файл /etc/postgresql/12/main/bg_hba.conf

если я использую sudo sh -c 'echo "host all all 0.0.0.0/0 trust" >> /etc/postgresql/12/main/bg_hba.conf', я создам новый файл bg_hba.conf, но владельцем будет root.
Вот некоторые детали:

$ psql -V
psql (PostgreSQL) 12.2 (Ubuntu 12.2-2.pgdg18.04+1)
$ pg_config --version
PostgreSQL 12.2 (Ubuntu 12.2-2.pgdg18.04+1)
$ postgres -V
$ locate bin/postgres
/usr/lib/postgresql/12/bin/postgres
$ /usr/lib/postgresql/12/bin/postgres -V
postgres (PostgreSQL) 12.2 (Ubuntu 12.2-2.pgdg18.04+1)
$ pg_lsclusters
Версия Кластер Порт Статус Владелец  Директория данных                Файл лога
12  main    5432 онлайн postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
$ /etc/postgresql/12/main/pg_hba.conf
-bash: /etc/postgresql/12/main/pg_hba.conf: Отказано в разрешении

Пожалуйста, помогите мне!
В /etc/postgresql/12/main/postgresql.conf
у меня есть listen_addresses="*"
Я вижу, что postgresql.conf имеет rw-r--r--, а bg_hba.conf – rw-r-----, я не могу прочитать этот, почему и как я могу это изменить)

Хорошо! Я нашёл проблему, и это была небольшая ошибка в моём пути к 'bg_hba.conf' -> 'pg_hba.conf' /etc/postgresql/12/main/bg_hba.conf' эта замена на эту – > /etc/postgresql/12/main/pg_hba.conf'

Ответ или решение

Проблема, о которой идет речь, связана с невозможностью подключения к серверу PostgreSQL из-за отсутствия соответствующей записи в файле конфигурации pg_hba.conf, а также с путаницей в имени файла конфигурации. Давайте разберем вашу ситуацию более подробно и предложим конкретные шаги по ее решению.

1. Понимание проблемы

Вы получили сообщение об ошибке:

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

Это сообщение указывает на то, что в файле конфигурации (pg_hba.conf) нет записи, позволяющей доступ к вашей базе данных. Для устранения этой проблемы вам необходимо убедиться, что файл pg_hba.conf правильно настроен.

2. Исправление имени файла

Как вы уже заметили, в вашей команде была ошибка в пути к файлу. Правильный путь для открытия файла конфигурации должен быть:

sudo nano /etc/postgresql/12/main/pg_hba.conf

Убедитесь, что вы открываете именно этот файл, а не файл с неправильным именем, например, bg_hba.conf.

3. Изменение и добавление записей

После открытия pg_hba.conf вам необходимо добавить необходимую строку для разрешения доступа. Например, вы можете добавить одну из следующих строк, в зависимости от уровня безопасности, который вы хотите установить:

host all all 0.0.0.0/0 md5

или

host all all 0.0.0.0/0 trust
  • md5 — это метод аутентификации, который требует пароль, и считается безопасным.
  • trust — позволяет любому подключаться без пароля, и его использование не рекомендуется для производственных систем.

После добавления строки сохраните изменения. В редакторе nano это можно сделать сочетанием клавиш Ctrl + X, затем Y, и нажмите Enter.

4. Проверка прав доступа

Необходимо убедиться, что у вас есть достаточные права для редактирования файла pg_hba.conf. Если вы запускали команду без sudo, это могло стать причиной ошибок доступа. Использование sudo nano уже подразумевает корректные права.

5. Перезагрузка PostgreSQL

После внесения изменений в pg_hba.conf вы должны перезагрузить сервер PostgreSQL, чтобы изменения вступили в силу:

sudo systemctl restart postgresql

6. Проверка подключения

После перезагрузки попробуйте снова подключиться к серверу PostgreSQL с вашего компьютера. Убедитесь, что вы используете правильные учетные данные и указываете правильный IP-адрес.

Заключение

Ошибки, подобные вашей, часто возникают из-за неправильных путей файлов или недостатка прав доступа. Выполнив описанные шаги, вы сможете настроить правильный доступ и подключиться к своему серверу PostgreSQL. Если проблемы сохраняются, стоит проверить, открыт ли порт PostgreSQL (обычно 5432) и соответствует ли IP-адреса ваших соединений настройкам безопасности AWS.

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

Капча загружается...