如何在redshift中创建READ ONLY用户

时间:2014-02-05 22:10:37

标签: postgresql amazon-redshift

我需要在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。不是全部。

如果我错了,你可以指导我吗?

再次感谢你

1 个答案:

答案 0 :(得分:1)

默认情况下,每个用户都可以在“公共”模式上访问和创建表,因为“PUBLIC”(所有用户)都拥有“公共”模式的所有权限。您可以使用以下命令从用户撤消对“PUBLIC”的CREATE权限。

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
  • “public”:架构名称
  • “PUBLIC”:“所有用户”的标识符

运行上述命令后,需要运行GRANT命令,允许用户访问“PUBLIC”模式。

GRANT CREATE ON SCHEMA public TO {user-name};

本文档解释了它。