什么是PostgreSQL表所有者?

Jon*_*urg 16 postgresql

我不确定PostgreSQL表所有者是什么意思.我注意到它改变了表本身的属性而不是所有者的属性,因为它是通过一个指定的

ALTER table SET OWNER role;
Run Code Online (Sandbox Code Playgroud)

Sci*_*cco 16

您可以在某些表格中看到谁是所有者:

select * from pg_tables where tablename = 'my_tbl';
Run Code Online (Sandbox Code Playgroud)

或者您可以查看某些所有者的所有表:

select * from pg_tables where tableowner = 'username';
Run Code Online (Sandbox Code Playgroud)

  • 不回答问题。 (23认同)
  • 不过还是有帮助的。 (4认同)

a_h*_*ame 11

所有者(如果没有其他事情发生)创建表的用户(角色).因此,如果用户arthur运行create table foo (id integer),则arthur 拥有该表.

表的所​​有者拥有它的所有权限 - 包括删除它的权限.或者授予其他用户(角色)访问该表的权限.

生成的SQL脚本pg_dump通常包括alter table set owner ...语句,因为这些脚本是由DBA运行的,在这种情况下,所有表都将由DBA拥有 - 这意味着"真正的"所有者无法更改或访问表.


Nat*_*ell 5

官方文档的一些摘录:

当一个对象被创建时,它被分配一个所有者。所有者通常是执行创建语句的角色。对于大多数类型的对象,初始状态是只有所有者(或超级用户)可以对对象执行任何操作。为了允许其他角色使用它,必须授予权限。

修改或销毁对象的权利是对象所有者所固有的,并且本身不能授予或撤销。(但是,像所有特权一样,该权利可以由拥有角色的成员继承;请参阅第 21.3 节。)

通常,只有对象的所有者(或超级用户)才能授予或撤销对象的权限。

对象的所有者可以选择撤销自己的普通权限,例如将表设置为自己和其他人只读。但所有者始终被视为拥有所有授予选项,因此他们始终可以重新授予自己的特权。