В статье описано, как устранить ошибку аутентификации PostgreSQL, которая может появиться в логах Kickidler Server во время или после установки сервера на Linux.
Инструкция предназначена для Kickidler Server 1.0 на Linux, когда PostgreSQL использует метод аутентификации scram-sha-256, а серверному компоненту требуется совместимый метод.
В логах сервера может появиться следующая ошибка:
|
ERROR database connection failed: SCRAM authentication requires libpq version 10 or above QPSQL: Unable to connect |
В этом состоянии Kickidler Server не может пройти аутентификацию в PostgreSQL, из-за чего служба может не запускаться или не получать доступ к базе данных.
Проблема обычно связана с PostgreSQL 14. По умолчанию эта версия может использовать метод аутентификации scram-sha-256.
Kickidler Server 1.0 в некоторых Linux-окружениях не может работать с этим методом, поскольку используемая серверным компонентом клиентская библиотека PostgreSQL несовместима с SCRAM-аутентификацией.
Для устранения ошибки необходимо заменить метод локальной аутентификации PostgreSQL с scram-sha-256 на md5, а затем повторно задать пароль пользователю базы данных kickidler_node, чтобы PostgreSQL сохранил его в совместимом формате.
|
ВАЖНО Для этого исправления используйте md5. Не используйте trust в рабочей базе данных, если этот метод не был явно согласован для временной диагностики. Метод trust отключает проверку пароля для подходящих подключений. |
Убедитесь, что выполнены следующие условия:
|
ПРЕДУПРЕЖДЕНИЕ Команды ниже временно останавливают Kickidler Server. В это время сервер может не принимать данные от агентов, а веб-интерфейс может быть недоступен. На рабочем сервере выполняйте процедуру в согласованное окно обслуживания. |
Перед изменением файлов конфигурации PostgreSQL создайте резервные копии:
|
sudo cp /etc/postgresql/14/main/postgresql.conf /etc/postgresql/14/main/postgresql.conf.bak.$(date +%F_%H-%M-%S) sudo cp /etc/postgresql/14/main/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf.bak.$(date +%F_%H-%M-%S) |
Остановите службу KickidlerNode перед изменением параметров аутентификации PostgreSQL:
|
sudo systemctl stop kickidlernode |
Проверьте, что служба остановлена:
|
sudo systemctl status kickidlernode |
Откройте файл конфигурации PostgreSQL:
|
sudo nano /etc/postgresql/14/main/postgresql.conf |
Найдите строку:
|
#password_encryption = scram-sha-256 |
Раскомментируйте её и замените значение на:
|
password_encryption = md5 |
Сохраните файл и закройте редактор. В nano нажмите Ctrl+O, затем Enter, после чего Ctrl+X.
Перезапустите PostgreSQL, чтобы применить новый параметр шифрования паролей:
|
sudo systemctl restart postgresql |
Откройте файл настройки клиентской аутентификации PostgreSQL:
|
sudo nano /etc/postgresql/14/main/pg_hba.conf |
Найдите строки, где для локального доступа к PostgreSQL используется scram-sha-256, и замените метод на md5.
Пример:
|
host all all 127.0.0.1/32 md5 |
Сохраните файл и закройте редактор.
|
ПРИМЕЧАНИЕ Не изменяйте несвязанные правила сетевого доступа без необходимости. PostgreSQL не должен быть доступен с пользовательских рабочих станций или из интернета. |
После изменения password_encryption на md5 повторно задайте пароль пользователю PostgreSQL kickidler_node. Это необходимо, чтобы пароль был сохранён в совместимом формате.
Переключитесь на системного пользователя PostgreSQL:
|
sudo su postgres |
Запустите интерактивную консоль PostgreSQL:
|
psql |
Измените пароль пользователя kickidler_node:
|
\password kickidler_node |
Когда PostgreSQL запросит пароль, укажите пароль базы данных, используемый Kickidler Server. В стандартной установке используйте:
|
scout |
Выйдите из PostgreSQL:
|
\q |
Вернитесь в обычную оболочку:
|
exit |
Ещё раз перезапустите PostgreSQL:
|
sudo systemctl restart postgresql |
Запустите KickidlerNode:
|
sudo systemctl start kickidlernode |
Проверьте, что PostgreSQL и KickidlerNode запущены:
|
sudo systemctl status postgresql sudo systemctl status kickidlernode |
Затем повторно проверьте логи сервера. Ошибка SCRAM-аутентификации больше не должна появляться.
Ожидаемый результат:
Если после изменений сервер не запускается, восстановите файлы конфигурации из резервных копий, созданных перед процедурой.
Пример команд отката:
|
sudo systemctl stop kickidlernode sudo cp /etc/postgresql/14/main/postgresql.conf.bak.YYYY-MM-DD_HH-MM-SS /etc/postgresql/14/main/postgresql.conf sudo cp /etc/postgresql/14/main/pg_hba.conf.bak.YYYY-MM-DD_HH-MM-SS /etc/postgresql/14/main/pg_hba.conf sudo systemctl restart postgresql sudo systemctl start kickidlernode |
Замените YYYY-MM-DD_HH-MM-SS фактической временной меткой из имён резервных файлов.
Обратитесь в техническую поддержку Kickidler, если:
При обращении передайте: