Что такое опция/трюк grant
Мне нужно предоставить текущему пользователю («userA»), чтобы он мог сменить владельца объекта, который принадлежит другим пользователем («userC»)?Postgresql: ошибка «должен быть владельцем отношения» при смене объекта владельца
Точнее, контакт таблица принадлежит userC и когда я выполнить следующий запрос для изменения владельца к USERB, связанный с ПользовательА:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но ПользовательА имеет все необходимые права, чтобы сделать это нормально (далее "создать на схеме" вариант гранта должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Команда вывода строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>\dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Эта проблема возникает, когда мы используем неправильного пользователя для выполнения действий, таких как update/delete.я столкнулся с этой проблемой, потому что я использовал неправильного пользователя для DML. Когда я выбрал нужного пользователя, проблема была решена. Также, если вы предоставите привилегии DML для текущего пользователя, эта проблема будет решена. – Ankur
Просто хочу упомянуть, что если какой-либо пользователь чувствителен к регистру, он должен быть указан. Например: предоставить «UserB» пользователю A ->, и в этом случае первый пользователь чувствителен к регистру, но второй не – guival