TGViewer
Антон Дорошкевич | маяк в мире 1С и СУБД Антон Дорошкевич | маяк в мире 1С и СУБД @explorer1c · 2.02K subscribers
Post #72 3.72K
Смена dbowner у базы 1С на PostgreSQL

Согласно check-list по настройке 1с рекомендуется «для каждой продукционной информационной базы создавать отдельного пользователя».
Так же Информационная безопасность тоже требует чтобы мы работали под уникальными пользователями с каждой базой и при этом у этих пользователей нужен только минимально необходимый набор прав.

Казалось бы, что может быть проще?
Ну выполним аналог команды MS SQL
EXECUTE sp_changedbowner 'ERP';

и готово.

Но оказалось что всё не так просто, а иногда и невозможно…

❗️Так повелось у многих, что создаём базы не просто из под пользователя с правами SUPERUSER, а именно из под пользователя postgres.

Какие пути решения есть:
1. Сменить владельца базы
ALTER DATABASE "ERP" OWNER TO "ERP";


Получаем следующие эффекты:
❗️Владельцем таблиц остаётся postgres.
Ок, мы не робкого десятка и умеем писать скрипты...
В цикле бежим по всем таблицам и выполняем
ALTER TABLE OWNER TO

❗️Но при запуске 1С пишет «База данных непригодна для использования»…

Дело в недостаточном разрешении для lc_messages
Ок, выполняем
grant set ON PARAMETER lc_messages to " ERP ";

❗️И всё равно при запуске базы получаем:
42501: ERROR: must be owner of extension mchar

🚫И вот тут первое нерешаемое – назначить владельца для расширения невозможно.

2. REASSIGN OWNED - Команда затрагивает только объекты в текущей базе данных. Обычно её нужно выполнять в каждой базе данных, которая содержит объекты, принадлежащие удаляемой роли.
Как раз то что нужно!!!
Если бы мы изначально не создали базу из под пользователя postgres

Команда
REASSIGN OWNED BY postgres TO ERP

❗️– не выполнится, с ошибкой: Изменить владельца объектов, принадлежащих роли postgres, нельзя, так как они нужны системе базы данных.

⛔️Всё, тупик. К сожалению, для баз созданных из под postgres, изменить полноценно владельца невозможно!

И тут решение только одно – dump/restore базы во вновь созданную, владельцем которой назначен другой пользователь без прав SUPERUSER.

Ну а на будущее – после разворачивания сервера PostgreSQL нужно первым же делом создать себе нового пользователя с правами SUPERUSER и работать под ним, а Супер-SUPERUSER postgres оставить на крайний случай прописав ему например доступ только по 127.0.0.1 в pg_hba.conf

Ну и на всякий случай канал в MAX https://max.ru/explorer1c
  • 👍 32
  • 👏 6
  • 🤔 6
  • ❤ 4
  • 🤬 1
More from @explorer1c
  1. Sep 21, 2026Можно ли сделать поведение PostgreSQL в отношении потребления памяти процессами более жест…
  2. Sep 11, 2026Сегодня ровно год первому сообщению в канале! Огромное спасибо всем вам! Честно - было оче…
  3. Sep 9, 2026Теперь на багборде можно легко и быстро сравнить версии платформы по изменениям! Уверен чт…
  4. Sep 7, 2026Начнём...)
  5. Sep 2, 2026Как собрать для анализа запроса все временные таблицы с их содержимым? Все мы хорошо знаем…
  6. Aug 26, 2026Небольшой анонс поездок и мероприятий с моим участием: 08-10/09 - Обучение по кластеру 1с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →