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;
输出: