Kaj*_*nus 23 postgresql roles database-permissions
来自PostgreSQL文档:
角色的概念包含"用户"和"组"的概念.在8.1之前的PostgreSQL版本中,用户和组是不同类型的实体,但现在只有角色.任何角色都可以充当用户,组或两者.
为什么他们在8.1中做出这个改变?
从C编码器的角度来看,使用单个Role类(struct)可能更容易?
更多细节:
CREATE USER is equivalent to CREATE ROLE except that CREATE USER
为用户/角色提供LOGIN权限.
(我即将为我的webapp设计一个权限系统,因此我对此感兴趣.)
Erw*_*ter 27
合并有许多优点,没有缺点.例如,您现在可以通过添加/删除LOGIN
权限将"用户"无缝转换为"组",反之亦然.
ALTER ROLE myrole LOGIN;
ALTER ROLE myrole NOLOGIN;
Run Code Online (Sandbox Code Playgroud)
或者你可以GRANT任何其他登录("用户"),或者非登录的角色("本集团")的角色成员:
GRANT joe TO sue;
Run Code Online (Sandbox Code Playgroud)
你仍然可以:
CREATE USER james;
Run Code Online (Sandbox Code Playgroud)
CREATE GROUP workers;
Run Code Online (Sandbox Code Playgroud)
这与CREATE ROLE
现在实际上是一样的.
该手册已说明了一切.
我在 2003年6月6日的PostgreSQL-Hackers列表中找到了这个帖子,最终表明用户,组和角色是合并的.(感谢Craig Ringer建议我查看pgsql-hackers列表档案.)
这里提到了一些好处(我发现的那些好处).
允许组将组作为成员
ACL代码将被简化
可以简化GRANT/REVOKE语法和ACL列表的显示格式,因为对于给定名称是用户还是组,不需要语法标记.
在某些情况下,我可以看到允许直接以组/角色/ whatchacallit登录是有意义的
这也将解决information_schema视图仅显示拥有对象的问题
[使得更容易]表示授予组的权限[因为您只是重用角色相关代码?]