Вопрос или проблема
Я не могу подключиться к удалённому серверу 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.