当前位置: 首页 > news >正文

pgsql-用户角色组角色创建和维护

pgsql-用户&角色&组角色创建和维护

环境

  • win10
  • pgsql 14.2

相关文档

PostgreSQL 14.1 手册
create 语法
grant 授权语法
revoke 撤回语法
alter 更新语法

用户、角色、组角色概念和区别

早期版本(8.1之前)中用户、组、角色是不同的概念,现在角色的概念把“用户”和“组”的概念都包括在内。角色可以完成登录用户、组角色功能。

  • 作为组角色时,可以不为角色分配login属性;
  • 作为登录用户时,可以添加login属性,并设置认证类型(登录密码),如 password ‘123456’;
  • 为角色授予访问权限,如为数据库对象schema、table或者column的访问权限,每种对象有不同的特性;

数据库对象的关系

  • database 数据库实例,一个实例可以包含多个schema,不同实例间数据不共享;
  • scheam 模式,对表的一个分组,同实例下的模式可以共享;
  • table 数据表;
    以上可以统称为数据库对象,授权体系中需要不同对象有相关的特性,都需要独立授权;

ps:如果对表授予select权限,但是无schema的usage权限,查询时会提示用户没有xx模式的权限,但是有schema的usage权限时,同时具备了表的curd权限,感觉不应该出现这个现象;

创建测试表

‘’’
create schema mall;
–建table
create table mall.product
(
id varchar(32) not null constraint product_pk primary key,
name varchar(128),
price int
);
create table mall.“order”
(
id varchar(32) not null
constraint order_pk
primary key,
count int,
price int
);
–数据初始化
insert into mall.product(id,name,price) values (‘p1’,‘n1’,1),(‘p2’,‘n2’,2),(‘p3’,‘n3’,3);
insert into mall.order(id,count,price) values (‘o1’,1,1),(‘o2’,2,2),(‘o3’,2,3);
–CRUD验证
select * from mall.product;
delete from mall.product where id=‘x’;
update mall.product set name=‘x’ where id=‘x’;
insert into mall.product(id,name,price) values (‘p1’,‘n1’,1);
select * from mall.order;
‘’’

测试用例

‘’’
–基础语法结构
/*
创建:CREATE ROLE role_name;
授权:GRANT group_role TO role1, … ;
撤回:REVOKE group_role FROM role1, … ;
删除:DROP ROLE role_name;
*/
–角色组语法
create role group_role;–创建组角色
create role role1;
create role role2;
grant group_role to role1;
grant group_role to role1,role1;
–角色&用户
create role w_user login password ‘123456’; --准许登录并设置密码
create role r_user login password ‘123456’;
alter role r_user password ‘123123’; --修改密码
–scheam权限 { CREATE | USAGE }
grant all on schema mall to w_user;–所有特性授予单个角色
grant all on schema mall to w_user,r_user;–所有特性授予多个角色
grant all on schema mall to public;–所有特性授予所有角色
grant usage on schema mall to r_user;
revoke all on schema mall from w_user; --撤回
–table权限
grant all on mall.product to w_user;–单表单用户
grant all on mall.product,mall.“order” to w_user;–多表单用户
grant all on all tables in schema mall to w_user,r_user;–所有表多用户
grant all on all tables in schema mall to public;–所有表所有用户
grant all on mall.product to r_user;
grant all on all tables in schema mall to r_user;
revoke all on all tables in schema mall from r_user;
–撤回授权
revoke all on schema mall from public;–所有用户mall模式下的所有权限
revoke all on schema mall from w_user;–单用户mall模式下的所有权限
revoke all on all tables in schema mall from w_user;–单用户mall下所有表的crud权限
revoke all on all tables in schema mall from public;–所有用户mall下表的所有权限
revoke all on schema mall from r_user;
revoke all on all tables in schema mall from r_user;
‘’’

总结

pgsql高版本中授权体系里将用户、组、角色都合并到role对象中,完全松散管理。没有login特性的role可以理解为角色;带login特性的可以理解为用户;
官方文档中grant 授权语法里的语法结构仔细的看看,结构基本一致注意下on后边的关键字,对角色的理解很有帮助。

http://www.lryc.cn/news/742.html

相关文章:

  • 算法与数据结构理解
  • 常见的C++软件异常场景分析与总结
  • 【虹科公告】好消息!云展厅开放时间长达1年,2023年不限次云观展
  • Linux破解root密码
  • 2023年信息与通信工程国际会议(JCICE 2023)
  • ASP.NET Core+Element+SQL Server开发校园图书管理系统(完)
  • elasticsearch 批量写入(Python版).md
  • 【排序算法】快速排序(Quick Sort)
  • SpringIOC之创建Bean的核心方法doGetBean
  • docker快速部署xxjob2.3.0-SpringBoot快速集成示例
  • 项目管理的前路,前辈能给一些意见吗?
  • 省钱的年轻人,钱包被折扣店钻了空子
  • 【华为OD机试真题 js、python】优选核酸检测点、寻找核酸检测点【2022 Q4 100分】
  • 【MySQL】MySQL 8.0 新特性之 - 公用表表达式(CTE)
  • 基础面试题:C++中如何理解const修饰符
  • 在RT-Thread STM32F407平台下配置SPI flash为U盘
  • 数据存储技术复习(二)未完
  • 使用 QuTrunk+Amazon Deep Learning AMI(TensorFlow2)构建量子神经网络
  • python selenium浏览器复用技术
  • 第二章:创建虚拟机
  • 码上【call,apply,bind】的手写
  • 代谢组学Nature子刊!抑郁症居然“男女有别”,脑膜淋巴管起关键作用!
  • nacos配置中心搭建
  • uni-app低成本封装一个取色器组件
  • APP 怎么免费接入 MobPush
  • XGBoost
  • 你是什么时候从轻视到高看软件测试的?
  • 基于ssm的航空售票系统
  • 滑动窗口最大值
  • 接口文档参考示例