PostgreSQL技术大讲堂 - Part 6:PG用户与角色管理

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: PostgreSQL技术大讲堂 - Part 6:PG用户与角色管理

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

Part 6:PG用户与角色管理

内容1:PostgreSQL 创建用户

内容2:PostgreSQL 创建角色

内容3:PostgreSQL 权限介绍

内容4:PostgreSQL 给用户授权

内容5:PostgreSQL 给角色授权

内容6:PostgreSQL 回收权限

6.1、用户角色概述

用户与角色:? 数据库用户用来访问、管理数据库中的对象(表、索引…)

? 数据库角色用来管理数据库访问权限,简化权限的管理

? 用户和角色在整个数据库集簇中是全局性的,不是针对某个单一数据库,只要有足够的权限,用户可以访问所有数据库的对象。

? 数据库用户可以分为两类:

超级用户--postgres

普通用户--根据需要创建 用户与角色的区别:? user:拥有login登陆数据库权限的role

? role:可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限

? group:不拥有replication/noreplication、connectionlimit属性的role

? 在PG8.1之前,user与group是不同类型的实体,现在可以被看作是role,任意一个role均可自由的在user与group间转换

6.2、创建用户

创建用户? 方式1:在系统命令行使用create user命令

create user username create user -U postgres -p 7788 user1 (--forwindows)

? 方式2:在psql命令行使用create user(role)指令

CREATE user[ROLE] rolename;

CREATE USER name [[WITH] option[...]]

这里的option可以是:

SUPERUSER | NOSUPERUSER |CREATEDB | NOCREATEDB |CREATEROLE | NOCREATEROLE |CREATEUSER | NOCREATEUSER |INHERIT | NOINHERIT#角色是其他角色的成员,这些子句决定新角色是否从那些角色中“继承”特权 |LOGIN | NOLOGIN |REPLICATION | NOREPLICATION |BYPASSRLS | NOBYPASSRLS#决定是否一个角色可以绕过每一条行级安全性(RLS)策略。|CONNECTIONLIMIT connlimit |[ENCRYPTED | UNENCRYPTED] PASSWORD 'password' |VALIDUNTIL 'timestamp' | INROLE role_name [,...] |INGROUP role_name[,...] | ROLErole_name[,...]|ADMINrole_name[,...]#ADMIN子句与ROLE相似,让它们能够把这个角色中的成员关系授予给其他人。|USER role_name[,...] |SYSID uid

创建用户示例:

CREATE USER u1 SUPERUSER PASSWORD 'u1';--创建一个具有超级用户权限的用户

CREATE USER u2 CREATEDB PASSWORD 'u2';--创建一个具有建库权限的用户

CREATE USER u3 LOGIN;--创建一个具有登录权限的用户,默认值

CREATE ROLE u4 encrypted PASSWORD '123456' VALIDUNTIL '2018-08-16';--创建一个带有加密密码且具有有效时间的用户

注:属性LOGIN、SUPERUSER和CREATEROLE被视为特殊权限,它们不会像其它数据库对象的普通权限那样被继承。

6.3、创建角色

CREATE ROLE name [[WITH]option[...]] 这里的option可以是:

SUPERUSER | NOSUPERUSER|CREATEDB | NOCREATEDB|CREATEROLE | NOCREATEROLE|CREATEUSER | NOCREATEUSER|INHERIT | NOINHERIT|LOGIN | NOLOGIN|REPLICATION | NOREPLICATION|CONNECTIONLIMIT connlimit|[ENCRYPTED | UNENCRYPTED] PASSWORD 'password'|VALIDUNTIL 'timestamp' | INROLE role_name[,...]|INGROUP role_name[,...] | ROLE role_name[,...]|ADMIN role_name[,...] | USER role_name[,...] | SYSID uid

创建角色示例

CREATE ROLE manager;--创建一个角色

CREATE ROLE dev createdb;--创建一个具有建库权限的角色

CREATE ROLE r1 LOGIN;--创建一个具有登录权限的角色,类似于用户

CREATE ROLE u4 encrypted PASSWORD ‘123456’ VALIDUNTIL ‘2018-08-16’;--创建一个带有加密密码且具有有效时间的角色

6.4、查看用户与角色

查看用户与角色信息postgres=#\du 指令显示用户和角色属性

通过数据库字典表来查看用户信息postgres=# \d pg_user

通过数据库字典表来查看

通过数据库字典表来查看角色信息

postgres=# \d pg_roles

通过数据库字典表来查看角色信息

6.5、修改用户和角色

修改用户属性postgres=# \h alter user

命令:ALTER USER

描述:更改数据库角色

语法:

ALTER USER role_specification [ WITH ] 选项 [ ... ]

选项可以是

SUPERUSER | NOSUPERUSER| CREATEDB | NOCREATEDB| CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN| REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT 连接限制| [ ENCRYPTED ] PASSWORD '口令' | PASSWORD NULL | VALID UNTIL '时间戳'

ALTER USER 名称 RENAME TO 新的名称

……

修改用户示例

ALTER USER u2 RENAME TO u22; --修改用户的名字

ALTER USER u22 PASSWORD ‘u22’; --修改用户的密码

ALTER USER u22 CREATEROLE; --修改用户的权限

ALTER USER u22 IN DATABASE testdb RESET ALL; --修改数据库testdb中的参数重设 为默认值

修改角色示例

ALTER ROLE dev RENAME TO dev1; --修改角色的名字

ALTER ROLE dev1 SUPERUSER; --修改角色的权限

ALTER ROLE dev1 LOGIN; --修改角色的权限

6.6、删除用户

删除用户方法:

? 方式1:在系统命令行使用drop user命令删除用户 drop user –U postgres –p 7788 username;

? 方式2:在psql命令行使用drop删除

drop role rolename; 或 drop user username;

DROP ROLE IF EXISTS role_name;

注意事项:1、只用超级用户能够删除超级用户

2、只有具有create role权限的用户能删除非超级用户

3、删除用户前,需要先删除依赖该用户的对象、权限等信息

4、任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色, 任何赋予该组角色的权限也都必须被撤消。

5、删除组role只会删除组的role本身,组的成员并不会被删除 删除用户与角色示例:

DROP USER u22;

DROP USER IF EXISTS u3;

DROP ROLE IF EXISTS u4;

注意:删除用户和角色所用命令可以通用

6.7、启用角色赋予的权限

启用某个角色权限:

分配给用户的角色在用户登录时其权限不会自动生效,需要启用该角色。命令:

Set role manager;

注意:此时登陆的用户名变成manager。在此期间创建的对象也是属于manager。

6.8、权限管理

权限管理

? 每个数据库对象都有一个所有者,默认情况下,所有者拥有该对象的所有权限

? 在数据库中所有的权限都和角色挂钩

? 对超级用户postgres不做权限检查,其它用户走ACL(Access ControL List)

? 对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走ACL

权限管理结构层次图

以上就是Part 6 - PG用户与角色管理 的内容,欢迎进群一起探讨交流,钉钉交流群:35,82,24,60,钉钉群专门讲解,往期视频也可联系cuug咨询老师

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
开发者视角看云原生数据库一体化技术趋势
随着云原生数据库技术的不断发展,一体化数据库解决方案成为技术圈的热点,云原生数据库一体化技术是当前数据库领域的重要趋势,对于开发者而言,学习理解和应对这一趋势,对于业务开发的成功实施非常重要。比如,阿里云瑶池数据库和PolarDB-X等产品通过离在线一体化、处理分析一体化和集中分布一体化等创新理念,引领了数据库领域的新变革。那么本文就来从开发者的角度探讨云原生数据库一体化技术趋势,并分析在业务处理分析一体化、集中式与分布式数据库边界模糊和云原生一体化数据库的选择等方面的影响。
194 4
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
98 0
|
12天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
2月前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
90 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(一)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
31 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
71 1
|
2月前
|
负载均衡 监控 关系型数据库
PostgreSQL从小白到高手教程 - 第48讲:PG高可用实现keepalived
PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
65 1
|
2月前
|
Cloud Native OLAP OLTP
如何看待云原生数据库一体化的技术趋势?
面对业务处理分析一体化,开发者需平衡OLTP和OLAP数据库需求。关键在于理解业务目标,选择适合的数据库:OLTP注重高并发、低延迟,如MySQL、PostgreSQL;OLAP侧重复杂查询和数据聚合,如Greenplum、ClickHouse。云原生数据库提供弹性扩展和容灾能力。数据同步、一致性、安全性和合规性也是重要考量因素。开发者应持续关注新技术,以适应不断变化的业务需求。
|
2月前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
2月前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之数据库不能自己减少节点如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。