Postgresql:如何添加从另一个角色继承的角色?

ybu*_*yug 5 postgresql postgresql-9.2

很干很干,我只是个菜鸟。有没有办法让给定的角色从另一个角色继承?

Up_*_*One 10

CREATE ROLE doe LOGIN INHERIT;
CREATE ROLE sales NOINHERIT;
CREATE ROLE marketing NOINHERIT;
GRANT sales to doe;
GRANT marketing to sales;
Run Code Online (Sandbox Code Playgroud)

如果您以 doe 身份连接到 PostgreSQL,您将拥有 doe 权限和授予销售人员的权限,因为 doe 用户角色具有 INHERIT 属性。但是,您没有市场营销权限,因为 NOINHERIT 属性是为销售用户角色定义的。

注意: 角色属性 LOGIN、SUPERUSER、CREATEDB 和 CREATEROLE 可以被认为是特殊权限,但它们永远不会像数据库对象的普通权限那样被继承。

  • `NOINHERIT` 的目的是您仍然有权使用 `SET ROLE sales;` 然后充当 `sales` 角色,但您必须*明确*。所以它有利于授予只能有意行使的权利,有点像“sudo”。 (3认同)