← к ленте

Как переименовать таблицу в PostgreSQL без прав OWNER

N@datamishaкарьера / HR
3 дн

Автор рассказывает, как с помощью процедуры SECURITY DEFINER переименовать таблицу в PostgreSQL, не выдавая пользователю права OWNER.

Работаешь дата инженером не первый год, а PostgreSQL всё ещё может удивить 😅 Недавно столкнулся с ситуацией, которая, казалось бы, должна быть довольно распространённой. Нужно переименовать таблицу через ALTER TABLE ... RENAME, но ты не OWNER этой таблицы. Права на переименования раздать тоже нельзя Вроде штука достаточно распространненая должна быть, но раньше я как-то не сталкивался с такой задачей. В итоге решение оказалось довольно интересным — SECURITY DEFINER. Можно создать процедуру, которая будет выполняться с правами своего владельца, и дать пользователю доступ только к её вызову.

CREATE PROCEDURE ...
SECURITY DEFINER
В результате пользователь может выполнить нужное переименование, не получая права OWNER на сами таблицы. Я в такие моменты всегда задаюсь вопросом: "А точно ли я все эти годы чем-то занимаюсь, если мне еще не встречались такие вещи?)" А у вас были подобные моменты, когда внезапно узнаёшь что-то новое в технологии, с которой давно работаешь?
Как переименовать таблицу в PostgreSQL без прав OWNER

Кратко (AI)

Автор делится случаем, когда понадобилось переименовать таблицу в PostgreSQL, не будучи её владельцем. Он предлагает создать процедуру с SECURITY DEFINER и дать пользователю право только на её вызов, а в конце спрашивает читателей об их похожих открытиях.

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖