什么是PostgreSQL表所有者?

cdmah0mi  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(3)|浏览(285)

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

ALTER TABLE table_name OWNER TO role_name;
b1zrtrql

b1zrtrql1#

您可以在某个表中查看谁是所有者:

select * from pg_tables where tablename = 'my_tbl';

或者您可以按特定所有者查看所有表:

select * from pg_tables where tableowner = 'username';
piv4azn7

piv4azn72#

所有者是(如果没有发生其他事情)* 创建 * 表的用户(角色)。因此,如果用户arthur运行CREATE TABLE foo (id INTEGER),则arthur * 拥有 * 表。
表的所有者拥有对表的所有权限,包括删除表的权限,或授予 * 其他 * 用户(角色)访问表的权限。
pg_dump生成的SQL脚本通常包括ALTER TABLE ... OWNER TO ...语句,因为这些脚本是由DBA运行的,在这种情况下,所有表都归DBA所有-这意味着“真实的的”所有者不能更改或访问这些表。

vwoqyblh

vwoqyblh3#

official docs的一些摘录:
建立对象时,会指派一个拥有者。拥有者通常是执行建立叙述句的角色。对于大多数种类的对象,初始状态是只有拥有者(或超级使用者)可以对对象执行任何动作。若要允许其他角色使用对象,必须授与权限。
修改或销毁对象的权限是作为对象所有者所固有的,并且不能被授予或撤销。(但是,像所有特权一样,该权限可以由拥有角色的成员继承;见第21.3节。)
通常,只有对象的所有者(或超级用户)可以授予或撤消对对象的权限。
对象的所有者可以选择撤消自己的普通权限,例如,使表对自己和其他人都是只读的。但所有者始终被视为拥有所有授予选项,因此他们始终可以重新授予自己的权限。

相关问题