TGViewer
1С и AI, полезные инструменты и сервисы, стандарты и паттерны 1С и AI, полезные инструменты и сервисы, стандарты и паттерны @usefultools1c · 2.25K subscribers
Post #194 1.26K

Forwarded from Антон Дорошкевич | маяк в мире 1С и СУБД

Смена 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 и работать под ним, а Супер-SEPERUSER postgres оставить на крайний случай прописав ему например доступ только по 127.0.0.1 в pg_hba.conf

Ну и на всякий случай канал в MAX https://max.ru/explorer1c
  • 👍 4
More from @usefultools1c
  1. Sep 23, 2026📚 Программа A&PM EVENT 2026 готова! Можно открывать и выбирать, на что идти 12–14 ноября.…
  2. Sep 18, 2026Самодостаточность регистров 🟡 При проектировании структуры регистров придерживайтесь прав…
  3. Sep 11, 2026Post #229
  4. Sep 11, 2026🍁 Программа INFOSTART TECH EVENT 2026 полностью готова! Если вы работаете с 1С и хотите п…
  5. Sep 7, 2026Пока искал себе стажёров-программистов 1С, вспомнил, что у меня есть 2 бесплатных курса по…
  6. Aug 31, 2026Большой опрос сообщества 1С Ландшафт технологий 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 →