1. ホーム
  2. postgresql

Postgresql: 所有者オブジェクトの変更時に "リレーションの所有者でなければならない" というエラーが発生する。

2023-08-28 04:31:31

質問

の部分はどうなっていますか? grant オプション/トリックを現在のユーザーに与える必要があります (" ユーザーA ")に、他のユーザが所有するオブジェクトの所有者を変更できるようにする(" ユーザーC ということでしょうか?)

より正確には 接触 テーブルの所有者は ユーザーC に所有者を変更するために以下のクエリを実行したところ userB と接続し ユーザーA :

alter table contact owner to userB;

こんなエラーが出ます。

ERROR:  must be owner of relation contact

しかし ユーザA は普通にそれを行うために必要なすべての権利を持っています(" スキーマで作成 "グラントオプションで十分です)。

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;

ありがとうございます。


コマンドライン出力です。

root@server:~# 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=>

どのように解決するのですか?

Mikeのコメントのおかげで、私はドキュメントを再読し、私の現在のユーザー(すなわち、すでに を作成します。 権限を持つユーザーA) は 新しい所有ロールの直接/間接メンバーではない ...

というわけで、解決策は至ってシンプルで、この付与を行っただけです。

grant userB to userA;

以上です ;-)


更新してください。

もう一つの要件は、オブジェクトの所有者がユーザーでなければならないことです。 ユーザーA が所有しなければならないということです。