📜  PostgreSQL – 角色成员

📅  最后修改于: 2022-05-13 01:57:15.911000             🧑  作者: Mango

PostgreSQL – 角色成员

在本文中,我们将研究PostgreSQL组角色及其在 PostgreSQL 数据库中更有效地管理权限的用途。创建组角色是一种标准做法,因为它可以显着降低授予或调用数据库权限所需的复杂性和时间。但是这种技术有一个问题。按照惯例,组角色没有 LOGIN 权限。

要创建组角色,您可以使用 CREATE ROLE 语句,如下所示:

Syntax: CREATE ROLE group_role_name;

GRANT 语句可用于将角色添加到组角色,如下所示:

Syntax: GRANT group_role to user_role;

要从组角色中删除用户角色,您可以使用REVOKE语句,如下所示:

Syntax: REVOKE group_role FROM user_role;

角色可以通过以下方式使用组角色的权限:



  • 如果我们使用 INHERIT 属性,组角色的成员将自动获得组的所有权限。
  • 要创建临时角色,请使用 SET ROLE 语句。

例子:

创建一个名为corp的新数据库

create database corp;

切换到公司 数据库:

\c corp

创建联系人 桌子:

create table contacts(
   id int generated always as identity primary key,
   name varchar(255) not null,
   phone varchar(255) not null
);

创建预测 桌子:

create table forecasts(
    year int, 
    month int, 
    amount numeric
);

创建角色“安妮”,可以登录使用密码,并继承组角色,其中它是一个成员的所有权限:

create role anil inherit login password 'securePass1';

授予预测选择 表到阿尼尔

grant select on forecasts to anil;

使用以下命令检查授权表:



\z

这将导致以下情况:

创建营销 团体角色:

create role marketing noinherit;

创建计划 团体角色:

create role planning noinherit;

授予联系人的所有权限 营销

grant all on contacts to marketing;

授予所有预测权限 计划

grant all on forecasts to planning;

添加 'Anil' 作为营销成员

grant marketing to anil;

添加计划作为营销成员

grant marketing to planning;

现在,角色 Anil 可以从预测表中选择数据

select * from forecasts;

并在联系人表中插入一行

insert into contacts(name, phone) values('Raju kumar', '408-102-3459');

由于 Anil 可以预测中插入一行 表,PostgreSQL 将按预期运行,插入将按预期进行。因此,请使用以下命令检查插入的数据”

SELECT * FROM contacts;

输出: