pgbouncer аутентификация доверия не удалась

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

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

Пока что всё работает на localhost. Мое приложение пытается подключиться к pgbouncer, но я получаю следующую ошибку:
LOG C-0x5583ca3d3490: (nodb)/(nouser)@127.0.0.1:39042 такого пользователя не существует: postgres
LOG C-0x5583ca3d3490: (nodb)/[email protected]:39042 попытка входа: db=Test69 user=postgres tls=no
LOG C-0x5583ca3d3490: (nodb)/[email protected]:39042 закрытие из-за: “доверительная” аутентификация не удалась (время=0с)
WARNING C-0x5583ca3d3490: (nodb)/[email protected]:39042 ошибка пула: “доверительная” аутентификация не удалась

Насколько я понимаю, доверительная аутентификация должна просто позволять любому подключаться, но по какой-то причине это не удается

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

Ошибка аутентификации "trust" в PgBouncer может возникнуть по нескольким причинам. В вашем случае, судя по приведенному лог-файлу, проблема в том, что пользователь "postgres" не распознается при попытке подключения через PgBouncer, хотя соединение напрямую с PostgreSQL проходит успешно.

1. Проверьте настройки PgBouncer

Первым делом необходимо убедиться в корректности конфигурации PgBouncer. Проверьте файл конфигурации pgbouncer.ini на наличие правильных параметров для аутентификации и пользователя, с которым вы пытаетесь подключиться:

[databases]
Test69 = host=127.0.0.1 dbname=Test69 user=postgres

[pgbouncer]
auth_type = trust

Параметр auth_type следует установить в значение trust, чтобы разрешить подключения без аутентификации, но нужно убедиться, что все остальные настройки также правильные.

2. Проверка пользователей в PostgreSQL

Необходимо проверить, существует ли пользователь "postgres" в вашей базе данных PostgreSQL. Это можно сделать, подключившись к PostgreSQL напрямую и выполнив следующий SQL-запрос:

SELECT usename FROM pg_catalog.pg_user;

Если пользователь "postgres" отсутствует в списке, вам потребуется создать его, используя следующее:

CREATE USER postgres WITH PASSWORD 'your_password';

3. Конфигурация pg_hba.conf

Другой ключевой файл — это pg_hba.conf, который управляет доступом к вашей базе данных. Убедитесь, что маппинг для вашего пользователя "postgres" настроен правильно, и он допускает trust для соединений от PgBouncer. Пример записи, который можно добавить:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

host    Test69         postgres        127.0.0.1/32            trust

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

4. Проверьте конфигурацию PgBouncer

Убедитесь, что PgBouncer корректно запущен и использует актуальные параметры. Запустите PgBouncer с ключом -d для детальной отладки, чтобы убедиться, что он запускается с правильными настройками и загружает нужный файл конфигурации.

5. Проверка логов

Логи PgBouncer могут дать ценную информацию. Просмотрите их на наличие ошибок, связанных с аутентификацией или загрузкой конфигурационных файлов. Это может привести вас к корню проблемы.

6. Убедитесь, что ваше приложение правильно настроено

Проверьте, что в вашей Spring-приложении или в конфигурации подключения к базе данных указаны правильные параметры для подключения через PgBouncer. Например, строка подключения должна выглядеть следующим образом:

spring.datasource.url=jdbc:postgresql://127.0.0.1:6432/Test69
spring.datasource.username=postgres
spring.datasource.password=your_password

Заключение

Таким образом, основными шагами в решении проблемы аутентификации "trust" в PgBouncer являются: проверка правильности конфигураций PgBouncer и PostgreSQL, наличие пользователя в базе данных, корректная настройка файла pg_hba.conf, а также правильная конфигурация в вашем приложении. Следуя этим пунктам, вы сможете устранить проблему с аутентификацией и успешно подключиться через PgBouncer для балансировки нагрузки.

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

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