问题 ALTER ROLE与CREATEDB和GRANT CREATE在TABLESPACE之间的区别


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

GRANT CREATE ON TABLESPACE pg_default TO username;

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

ALTER ROLE username WITH CREATEDB;

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

来自 文档,TABLESPACE上的GRANT CREATE意味着(我的重点):

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


5153
2017-12-31 18:49


起源



答案:


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

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


11
2018-01-04 04:53





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

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


1
2017-12-31 18:54





表空间 是不一样的 数据库


1
2017-12-31 19:07