架构公共所有者的更改取决于我登录的人员?

Cei*_*ili 5 postgresql privileges psql

$ psql postgres

postgres=# \dn
        List of schemas
        Name        |  Owner
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_1    | postgres
 public             | student
(5 rows)
Run Code Online (Sandbox Code Playgroud)

当我使用用户postgres登录psql时,它显示schema public由用户student拥有.但是,当我与用户学生登录psql时:

$ psql student

student=> \dn
        List of schemas
        Name        |  Owner
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_1    | postgres
 public             | postgres
(5 rows)
Run Code Online (Sandbox Code Playgroud)

它表明schema public由用户postgres拥有.

如果具有此权限的用户认为已经完成,那么如何将模式公共所有权转让给用户学生?

Erw*_*ter 11

这是一种误解.您正在登录两个不同的数据库.

跑步时

$ psql postgres
Run Code Online (Sandbox Code Playgroud)

postgres是数据库的名称.使用默认配置时,数据库用户的名称是从使用ident身份验证的系统用户的名称派生的.唯一的参数假定为数据库名称.您希望更改数据库中的任何内容postgres,它是用于维护任务的系统数据库.

另一个数据库已命名student.每个数据库都有一个架构public及其各自的所有者.

阅读psql手册或尝试低级man psql.

public在数据库中转移架构的所有权,请student以超级用户身份登录:

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

或者只是(作为系统用户postgres):

psql student
Run Code Online (Sandbox Code Playgroud)

并运行:

ALTER SCHEMA public OWNER TO student;
Run Code Online (Sandbox Code Playgroud)

手册中的详细信息再次出现.