Bug 53381

Summary: Скрипт create_postgresql_database и т. п. не работают в p11, sisyphus
Product: Sisyphus Reporter: Artem Varaksa <varaksaaa>
Component: bacula15Assignee: Alexei Takaseev <taf>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: taf
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Artem Varaksa 2025-03-10 14:01:56 MSK
Шаги
====

0. # export BACULA=15 POSTGRESQL=17
1. # apt-get install -y mt-st postgresql$POSTGRESQL-server bacula$BACULA-{common,console,storage,client,director-{common,postgresql}}
2. # /etc/init.d/postgresql initdb && echo "listen_addresses = 'localhost'" >> /var/lib/pgsql/data/postgresql.conf
3. # systemctl enable --now postgresql && systemctl status postgresql
4. # createuser -U postgres --superuser root
5. # /usr/share/bacula/scripts/create_postgresql_database && \
     /usr/share/bacula/scripts/make_postgresql_tables && \
     /usr/share/bacula/scripts/grant_postgresql_privileges

Примечание: воспроизводится с любой версией postgresql 14..=17
Примечание: воспроизводится и с bacula 13 (p11), и с 15 (p11+375453, sisyphus)
Примечание: не воспроизводится в p10

Фактический результат
=====================

> ...
> Пароль пользователя root:
> psql: ошибка: подключиться к серверу через сокет "/tmp/.s.PGSQL.5432" не удалось: ВАЖНО:  пользователь "root" не прошёл проверку подлинности (по паролю)

Ожидаемый результат
===================

> ...
> Пароль пользователя postgres:
> CREATE DATABASE
> ALTER DATABASE
> Creation of bacula database succeeded.
> ...

Дополнительно
=============

В составе пакета есть аналогичные скрипты с названием вида *_bacula_* - при запуске с параметром postgresql они работают в p10, p11 и sisyphus, т. к. запускают вышеупомянутые скрипты с `pre_command="su - postgres -s /bin/bash -c"`, например:

# /usr/share/bacula/scripts/create_bacula_database postgresql && \
  /usr/share/bacula/scripts/make_bacula_tables postgresql && \
  /usr/share/bacula/scripts/grant_bacula_privileges postgresql

Примечание: уже в bacula 13 был добавлен patch `bacula13-alt-fix-create-pg-database.patch`, добавляющий к `pre_command` аргумент `-s /bin/bash`, но только в скриптах вида `*_bacula_*`:
* https://git.altlinux.org/gears/b/bacula15.git?p=bacula15.git;a=commit;h=2f5379779939ce940945c219664f6c6bb7a24a8d

Возможно, предполагается использование только их, а не напрямую db-специфичных?

Воспроизводимость
=================

Воспроизводится на виртуальных машинах:

[p11+375453] [sisyphus] ALT Server 11.0 beta20250213 x86_64
bacula15-common-15.0.2-alt2.x86_64
postgresql17-server-17.4-alt1.x86_64

[p11] ALT Server 11.0 beta20250213 x86_64
bacula13-common-13.0.4-alt2.x86_64
postgresql17-server-17.4-alt1.x86_64


Не воспроизводится на виртуальных машинах:

[p10+375490] ALT Server 10.4 x86_64
bacula15-common-15.0.2-alt2.x86_64
postgresql17-server-17.4-alt0.p10.1.x86_64

[p10] ALT Server 10.4 x86_64
bacula13-common-13.0.4-alt2.x86_64
postgresql17-server-17.4-alt0.p10.1.x86_64
Comment 1 Alexei Takaseev 2025-03-10 14:15:30 MSK
Ошибка тестирования:

Во-первых, на шаге 4 созданной роли root не назначен пароль, требуется запускать createuser с ключем -P и назначить пароль. В Сизифе и p11 наличие пароля у роли СУБД является обязательным.

Во-вторых, создание базы производится вызовом скриптов create_bacula_database make_bacula_tables и grant_bacula_privileges. Вызов этих скриптов без параметров предполагает использование PostgreSQL, если нужна другая СУБД, то его тип указывается параметром (mysql или sqlite3)
Comment 2 Artem Varaksa 2025-03-10 16:27:29 MSK
(In reply to Alexei Takaseev from comment #1)
> Во-вторых, создание базы производится вызовом скриптов
> create_bacula_database make_bacula_tables и grant_bacula_privileges. Вызов
> этих скриптов без параметров предполагает использование PostgreSQL, если
> нужна другая СУБД, то его тип указывается параметром (mysql или sqlite3)

В wiki, упомянутой в https://bugzilla.altlinux.org/show_bug.cgi?id=53382#c2, указано использовать скрипты *_postgresql_*.
Comment 3 Alexei Takaseev 2025-03-10 16:28:55 MSK
(Ответ для Artem Varaksa на комментарий #2)
> (In reply to Alexei Takaseev from comment #1)
> > Во-вторых, создание базы производится вызовом скриптов
> > create_bacula_database make_bacula_tables и grant_bacula_privileges. Вызов
> > этих скриптов без параметров предполагает использование PostgreSQL, если
> > нужна другая СУБД, то его тип указывается параметром (mysql или sqlite3)
> 
> В wiki, упомянутой в https://bugzilla.altlinux.org/show_bug.cgi?id=53382#c2,
> указано использовать скрипты *_postgresql_*.

Документацию там надо править, но суть в том, что пароль надо задать в скрипте осталась та же.