来自MySQL并且不知道ROLE我心不在焉地尝试了这个
GRANT CREATE ON TABLESPACE pg_default TO username;
它没有达到预期的效果。我正在寻找的命令是:
ALTER ROLE username WITH CREATEDB;
但究竟有什么区别?给某人CREATEDB角色隐含地给他们CREATE ON TABLESPACE ......?有桌子可以看到这一切吗?
从docs,GRANT CREATE ON TABLESPACE意味着(我的重点):
对于表空间,允许表, 索引和临时文件 在表空间内创建,和 允许数据库 已创建 表空间作为默认值 表空间。 (注意撤消这个 特权不会改变位置 现有对象。)
答案 0 :(得分:11)
他们是完全不同的特权。 CREATEDB表示角色可以创建数据库。如果您的角色没有,则无法创建数据库,期限。
将表空间的CREATE授予角色意味着该角色将能够将该表空间用作数据库的默认表空间。因此,CREATEDB的角色将能够创建数据库;只是不在那个表空间。请注意,总是有一个pg_default表空间,它将用作没有默认表空间的数据库的默认表空间。
答案 1 :(得分:1)
看起来第一个语句使您能够创建表空间。这是保存数据库的数据/索引/ ...的物理文件(或存储设备上的空间)。
因此,您有效地使用命令授予了两种不同的权利。
答案 2 :(得分:1)