【问题标题】:CloudSQL Postgres confused around table grants and ownersCloudSQL Postgres 对表授权和所有者感到困惑
【发布时间】:2019-10-11 09:38:03
【问题描述】:

我在 GCP 上使用 CloudSQL Postgres 11,我有一些关于权限和授权的问题。我现在只是不明白,对 postgres 还很陌生。

我有一个用户,pgadmin,它是一个超级用户。有了这个用户,我可以连接到实例并创建一个名为“沙盒”的数据库。

然后我有一个应用角色,定义如下:

CREATE ROLE app;
GRANT CONNECT ON DATABASE <database name> TO app;
GRANT USAGE, CREATE ON SCHEMA public TO app;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO app;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO app;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE ON SEQUENCES TO app;

我创建了一个名为 app_sandbox 的用户,我授予该角色。

然后,应用用户使用创建 2 个表的 flyway 进行数据库迁移。事情的那一面很好。

但是对于我的超级用户 pgadmin,我看不到这些表或查询它们,即使这个用户拥有数据库并且是超级用户。我尝试过各种资助。感觉好像我遗漏了一些重要的东西,因为即使我真的要使用 pgadmin 用户创建一个只读角色,我也无法授予对数据库公共架构中基础表的访问权限。

我错过了什么?

【问题讨论】:

    标签: postgresql google-cloud-sql postgresql-11


    【解决方案1】:

    仅仅因为一个用户 (=pgadmin) 拥有数据库,并不意味着该用户也拥有在该数据库中创建的表。而且由于pgadmin 不拥有这些表,因此您在以pgadmin 身份登录时无法访问它们

    如果应用用户创建了这些表,则它们属于该用户,并且只有 app 用户可以将这些表的权限授予其他用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2016-10-16
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多