在Google的SQL Cloud Postgres服务中,当我通过Web控制台为PostgreSQL实例创建数据库时,它会自动将数据库的默认“公共”模式的所有者设置为cloudsqladmin。看来我不能改变所有权:如何更改通过Google控制台创建的数据库中公共架构的所有者?
mydb=> \dn
List of schemas
Name | Owner
--------+---------------
public | cloudsqladmin
(1 row)
mydb=> alter schema public owner to postgres;
ERROR: must be owner of schema public
mydb=> \du
List of roles
Role name | Attributes | Member of
-------------------+------------------------------------------------+---------------------
cloudsqladmin | Superuser, Create role, Create DB, Replication | {}
cloudsqlagent | Create role, Create DB | {cloudsqlsuperuser}
cloudsqlreplica | Replication | {}
cloudsqlsuperuser | Create role, Create DB | {}
pg_signal_backend | Cannot login | {}
postgres | Create role, Create DB | {cloudsqlsuperuser}
mynewuser | Create role, Create DB | {cloudsqlsuperuser}
我还可以通过Web控制台创建了一个“mynewuser”,不能从“cloudsqlsuperuser”组中删除了“mynewuser”:如果我
mydb=> alter group cloudsqlsuperuser drop user mynewuser;
ERROR: "cloudsqlsuperuser" can't be altered
想要创建一个只有新用户才能访问(并拥有)的公共模式的数据库,我应该在Google web ui之外进行此操作吗?看起来我创建的任何数据库都由cloudsqladmin拥有,并且我创建的任何用户都是那些“cloudsqlsuperuser”成员。如果我想限制用户的权限,我是否应该通过psql正常创建该用户,并完全绕过Web UI?