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

ari*_*ell 11 postgresql

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

GRANT CREATE ON TABLESPACE pg_default TO username;
Run Code Online (Sandbox Code Playgroud)

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

ALTER ROLE username WITH CREATEDB;
Run Code Online (Sandbox Code Playgroud)

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

文档中,GRANT CREATE ON TABLESPACE意味着(我的重点):

对于表空间,允许在表空间中创建表,索引和临时文件,并 允许创建将表空间作为其默认表空间的数据库.(请注意,撤消此权限不会改变现有对象的位置.)

alv*_*rre 11

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

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