CloudSQL Postgres混淆了表授予和所有者

时间:2019-10-11 09:38:03

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

我在GCP上使用CloudSQL Postgres 11,并且我对权限和授予有一些疑问。我只是暂时不了解它,对Postgres来说是个新手。

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

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

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的用户,我授予了该角色。

然后,应用程序用户使用flyway进行数据库迁移,该数据库创建了2个表。那方面很好。

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

我想念什么?

1 个答案:

答案 0 :(得分:1)

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

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