我需要在redshift cluster db中创建READ-ONLY用户帐户。创建用户帐户后,该用户不应该在PUBLIC中创建任何对象。但是他们可以选择任何对象。自CREATE&默认情况下,USAGE权限被授予所有用户,请指导我如何在PUBlic SCHEMA中限制对象创建?
版本:
PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.735
谢谢你
嗨,
我注意到你的回复。是的它有效。但我有一个澄清。
如果你在下面做了并在数据库中进一步创建了任何用户(现有用户),那么他们将无法在PUBLIC模式中创建对象。
postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE
所以,如果我重新设置(即下面),那么它适用于所有用户,并且所有用户都能够在DB中创建对象。
postgres=# grant create on schema public to public;
GRANT
我的意图是,我需要限制某些用户的对象创建(CREATE priv)。不适用于所有数据库用户。对于例如我需要创建2个用户。第一个是READ-ONLY。第二个是READ-WRITE。我应该能够仅撤销CREATE priv。不是全部。
如果我错了,你可以指导我吗?再次感谢你
答案 0 :(得分:1)
默认情况下,每个用户都可以在“公共”模式上访问和创建表,因为“PUBLIC”(所有用户)都拥有“公共”模式的所有权限。您可以使用以下命令从用户撤消对“PUBLIC”的CREATE权限。
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
运行上述命令后,需要运行GRANT命令,允许用户访问“PUBLIC”模式。
GRANT CREATE ON SCHEMA public TO {user-name};
本文档解释了它。