ALTER角色与CREATEDB和GRANT CREATE在TABLESPACE之间的区别

时间:2009-12-31 18:49:11

标签: postgresql

来自MySQL并且不知道ROLE我心不在焉地尝试了这个

GRANT CREATE ON TABLESPACE pg_default TO username;

它没有达到预期的效果。我正在寻找的命令是:

ALTER ROLE username WITH CREATEDB;

但究竟有什么区别?给某人CREATEDB角色隐含地给他们CREATE ON TABLESPACE ......?有桌子可以看到这一切吗?

docs,GRANT CREATE ON TABLESPACE意味着(我的重点):

  

对于表空间,允许表,   索引和临时文件   在表空间内创建,和   允许数据库   已创建   表空间作为默认值   表空间。 (注意撤消这个   特权不会改变位置   现有对象。)

3 个答案:

答案 0 :(得分:11)

他们是完全不同的特权。 CREATEDB表示角色可以创建数据库。如果您的角色没有,则无法创建数据库,期限。

将表空间的CREATE授予角色意味着该角色将能够将该表空间用作数据库的默认表空间。因此,CREATEDB的角色将能够创建数据库;只是不在那个表空间。请注意,总是有一个pg_default表空间,它将用作没有默认表空间的数据库的默认表空间。

答案 1 :(得分:1)

看起来第一个语句使您能够创建表空间。这是保存数据库的数据/索引/ ...的物理文件(或存储设备上的空间)。

因此,您有效地使用命令授予了两种不同的权利。

答案 2 :(得分:1)

Tablespacesdatabases不同。