如何更改数据库中表的所有权

mon*_*onu 16 database postgresql

我有一个数据库rndb并创建了一个新表myname_record,默认情况下使用所有者"postgres"创建.在我的程序中,我应该将所有者更改为"rndb",但我错过了它.现在我需要在控制台中执行此操作,因此我使用命令登录

psql=>psql -Urndb 
Run Code Online (Sandbox Code Playgroud)

然后使用以下查询更改所有者

rndb=>ALTER TABLE public.myname_record OWNER to rndb;
Run Code Online (Sandbox Code Playgroud)

但它说你必须是所有者来做这个改变.我可以理解,因为我通过rndb登录它给出了这个错误.但实际上如何做出这种改变.

谢谢你的帮助

Abh*_*hek 37

选择具有超级用户权限的角色,然后尝试更改表的所有者.

ALTER TABLE public.myname_record OWNER TO rndb;
Run Code Online (Sandbox Code Playgroud)


Cra*_*ger 7

您必须以当前表所有者的身份进行连接,而不是以您希望将表所有权更改为的用户的身份进行连接。因为那是postgres

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

或者

sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)

按要求。

(此外,超级用户始终可以将表所有权从任何内容更改为任何内容)。