Импортировать дамп psql без изменений в pg_hba.conf?

Некоторое время я работал над сценарием установки Tryton ERP в системах Linux. Между тем, большинство вещей работает, но я не могу обойти одну проблему:

Мне нужно предоставить возможность импортировать шаблон базы данных, содержащий несколько настроек, чтобы упростить доступ к Tryton. Используя эту команду:

      psql -U $db_user -d $db_version < *.sql

работает, но сначала мне нужно изменить в pg_hba.conf строку

      local   all all peer

к

      local   all all trust

или похожие.

Существует ли какой-либо способ выполнить такую ​​команду без этого изменения? - Сценарий установки запускается с привилегиями sudo, поэтому я ищу команду, достаточно мощную, чтобы игнорировать ограничения, установленные вpg_hba.conf.

Существует ли что-то подобное?

3 ответа

У вас должна быть возможность импортировать дамп от имени суперпользователя (PostgreSQL). При создании кластера PostgreSQL для пользователя, который будет запускать кластер базы данных, создается (супер)пользователь PostgreSQL. В системах Debianpostgresсистемный пользователь создан для запуска кластера(ов) PostgreSQL. По умолчанию для системного пользователя не создается пользователь PostgreSQL.

Со стандартной линией

      local all all peer

пользователю системы разрешен доступ только к гипотетической учетной записи PostgreSQL. Если эта учетная запись не существует, вы не сможете подключиться при запуске от имени .

Если вы замените эту строку на

      local all all trust

тогда любой локальный пользователь сможет подключиться как любой пользователь PostgreSQL, что, конечно, нежелательно. Но это позволяет вам запускатьpsqlкакrootсистемный пользователь и пользователь PostgreSQL.

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

      sudo -u postgres -- psql -d $db_version < *.sql

Ваши дампы должны содержать команды, необходимые для установки владельца объектов базы данных в$db_userПользователь PostgreSQL.

The --часть отделяет команду, котораяsudoзапустится из вариантов. Я добавил его, чтобы гарантировать, что он не будет пытаться интерпретировать-d $db_version. Не уверен, нужно ли это.

На форуме Tryton я получил решение:

Добавьте в команду -h localhost, чтобы не вносить никаких изменений в pg_hba.conf:

psql -U DB_user -d database_name -h localhost < DB_dump_name.sql

Особая благодарность Эдди! (:

К сожалению, возникла еще одна проблема:

При регистрации базы данных с помощью установки Tryton (команда trytond-admin) появляется следующее сообщение об ошибке:

      psycopg2.errors.DuplicateTable: relation "ir_configuration_id_seq" already exists

Эта проблема не возникает, когда я выполняю импорт от своего собственного пользователя базы данных («я») (что потребует изменения pg_hba.conf). Я предполагаю, что запуск команды psql с привилегиями «postgres», но для «me»-пользователя базы данных, решит проблему. Могу ли я добиться этого?

Заранее спасибо большое, Вольф

Другие вопросы по тегам