Postgresql: fout “moet eigenaar van relatie zijn” bij het wijzigen van een eigenaar-object

Wat is de grantoptie/truc die ik aan de huidige gebruiker (“userA“) moet geven om hem in staat te stellen de eigenaar van een object te wijzigen dat van een andere gebruiker is (“userC“)?

Om precies te zijn, de tabel contactis eigendom van de userCen wanneer ik de volgende query uitvoer om de eigenaar te wijzigen in de userB, verbonden met de userA:

alter table contact owner to userB;

Ik krijg deze foutmelding:

ERROR:  must be owner of relation contact

Maar userAheeft alle benodigde rechten om dat normaal te doen (de optie “create on schema” zou voldoende moeten zijn):

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;

Bedankt


Opdrachtregeluitvoer:

[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=>

Antwoord 1, autoriteit 100%

Dankzij de opmerking van Mike heb ik het document opnieuw gelezen en realiseerde ik me dat mijn huidige gebruiker (dwz gebruikerA die al het privilege createheeft) geen direct /indirect lid van de nieuwe eigenaarsrol

Dus de oplossing was vrij eenvoudig – ik heb net deze beurs gedaan:

grant userB to userA;

Dat is alles mensen 😉


Bijwerken:

Een andere vereiste is dat het object eigendom moet zijn van gebruiker userAvoordat het wordt gewijzigd…


Antwoord 2, autoriteit 14%

Uit de fijne handleiding.

U moet eigenaar zijn van de tabel om ALTER TABLE te gebruiken.

Of wees een database-supergebruiker.

FOUT: moet eigenaar zijn van relatiecontact

PostgreSQL-foutmeldingen zijn meestal perfect. Deze is perfect.


Antwoord 3, autoriteit 13%

Dit loste mijn probleem op: Voorbeeld van een wijzigingstabel om het eigendom te wijzigen.

ALTER TABLE databasechangelog OWNER TO arwin_ash;
ALTER TABLE databasechangeloglock OWNER TO arwin_ash;

Other episodes