gpt4 book ai didi

postgresql - 如何更改通过 Google 控制台创建的数据库中公共(public)架构的所有者?

转载 作者:行者123 更新时间:2023-11-29 13:19:40 25 4
gpt4 key购买 nike

在 Google 的 SQL Cloud Postgres 服务中,当我通过 Web 控制台为 PostgreSQL 实例创建数据库时,它会自动将数据库默认“公共(public)”架构的所有者设置为 cloudsqladmin。看来我无法更改所有权:

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

如果我想创建一个只有新用户可以访问(和拥有)的公共(public)模式的数据库,我应该在 Google 网络用户界面之外执行此操作吗?似乎我创建的任何数据库都归 cloudsqladmin 所有,我创建的任何用户都是那些“cloudsqlsuperuser”成员。如果我想限制用户的权限,我应该通过 psql 正常创建该用户并完全绕过 Web 用户界面吗?

最佳答案

根据我的经验,您似乎必须完全绕过 web ui/cli 工具。通过cli工具创建数据库时:

gcloud sql databases create DBNAME --instance INSTANCE

它将所有权分配给 cloudsqlsuperuser,从它的声音来看,与通过 gui 相同。

当我通过 CLI 工具专门创建了一个用户时:

gcloud sql users create USER 'host' --instance INSTANCE

这些用户获得与 cloudsqlsuperuser 相同的权限。在这种情况下,可以更改数据库的所有权。我通过 psql 命令成功连接为我想要拥有数据库并运行的用户:

ALTER DATABASE database OWNER TO user;

但是,如果用户是通过 psql(而不是 glcoud cli)创建的,则权限不同,上述操作失败。

我很想创建您的实例,通过该工具设置“postgres”用户密码,然后从那里 psql 进入实例并通过 sql 命令执行您需要的一切。我认为该工具在某些方面做得非常好(UI 也是如此),但稍后会很痛苦。

如果有人知道得更多,我很想听听您如何使用默认的 gcloud 用户。

关于postgresql - 如何更改通过 Google 控制台创建的数据库中公共(public)架构的所有者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com