https://www.cnblogs.com/binliubiao/p/14415203.html

1. 角色

​ 决定发起连接的命令的初始访问权限。在PG中,角色用户相当于是一样的对象。区别在于创建角色时是否又Login权限。

1.1 创建角色

CREATE ROLE name;

postgres->postgres@[local]:5432=# \h create role
Command: CREATE ROLE
Description: define a new database role
Syntax:
CREATE ROLE name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid -- 2.1 查询角色,检查pg_roles系统目录
SELECT rolname FROM pg_roles;
-- 2.2 psql程序的\du

1.2 角色属性

定义角色的权限并且与客户端认证系统交互

权限 说明 示例
login privilege 只有具有LOGIN属性的角色才能被用于一个数据库连接的初始角色名称。一个带有LOGIN属性的角色可以被认为和一个“数据库用户”相同。
CREATE USERCREATE ROLE等效,他们的区别:CREATE USER具有LOGIN权限,而CREATE ROLE没有LOGIN权限
CREATE ROLE name LOGIN;
CREATE USER name;
superuser status 一个数据库超级用户会绕开所有权限检查,除了登入的权利。 --创建超级用户
CREATE ROLE name SUPERUSER
database creation 创建数据库权限 CREATE ROLE name CREATEDB
role creation 创建角色权限。带有CREATEROLE权限的角色可以修改和删除其他角色,还可以授予或回收角色中的成员关系 CREATE ROLE name CREATEROLE
initiating replication 流复制角色。一个被用于流复制的角色必须也具有LOGIN权限。 CREATE ROLE name REPLICATION LOGIN
password 只有当客户端认证方法要求用户在连接数据库时提供一个口令时,一个口令才有意义。passwordmd5认证方法使用口令。 --创建角色时指定一个口令:
CREATE ROLE name PASSWORD 'string'。

1.3 角色成员关系

把用户分组在一起来便于管理权限常常很方便:那样,权限可以被授予一整个组或从一整个组回收。在PostgreSQL中通过创建一个表示组的角色来实现,并且然后将在该组角色中的成员关系授予给单独的用户角色。

使用GRANT和REVOKE命令增加和移除成员

GRANT group_role TO role1, ... ;
REVOKE group_role FROM role1, ... ;

组角色的成员可以以两种方式使用角色的权限。

  1. 一个组的每一个成员可以显式地执行SET ROLE命令来临时“成为”组角色。在这种状态中,数据库会话可以访问组角色而不是原始登录角色的权限,并且任何被创建的数据库对象被认为属于组角色而不是登录角色。
  2. 有INHERIT属性的成员角色自动地具有它们所属角色的权限,包括任何组角色继承得到的权限
-- 创建组角色 joe
CREATE ROLE joe LOGIN INHERIT;
-- 创建组角色 admin
CREATE ROLE admin NOINHERIT;
CREATE ROLE wheel NOINHERIT; -- 为角色joe授予组角色admin权限
GRANT admin TO joe;
-- 为角色admin授予组角色wheel权限
GRANT wheel TO admin;

对于角色joe来说,它具有登录权限及授予给admin组角色权限。然而,授予给wheel的权限不可用,因为即使joewheel的一个间接成员(admin),但是该成员关系是通过带NOINHERIT属性的admin得到。

角色属性LOGINSUPERUSERCREATEDBCREATEROLE是一种特殊权限,但是它们从来不会像数据库对象上的普通权限那样被继承。要使用这些属性,必须显性执行SET ROLE到一个具有该属性的角色。

销毁一个组角色:DROP ROLE name;

任何在该组角色中的成员关系会被自动撤销。

1.4 删除角色

由于角色可以拥有数据库对象并且能持有访问其他对象的特权。要删除角色必须先将该用户拥有的对象删除或转移给其他拥有者,并将已授予该角色的权限已经被回收。

-- 转移对象拥有者
ALTER TABLE bobs_table OWNER TO alice;

移除曾经拥有过对象的角色的方法

REASSIGN OWNED BY doomed_role TO successor_role;
DROP OWNED BY doomed_role;
-- 在集簇中的每一个数据库中重复上述命令
DROP ROLE doomed_role;

1.5 默认角色

PostgreSQL提供了一组默认角色,它们提供对特定的、通常需要的、需要特权的功能和信息的访问。

角色 允许的访问
pg_read_all_settings 读取所有配置变量,甚至是那些通常只对超级用户可见的变量。
pg_read_all_stats 读取所有的pg_stat_*视图并且使用与扩展相关的各种统计信息,甚至是那些通常只对超级用户可见的信息。
pg_stat_scan_tables 执行可能会在表上取得ACCESS SHARE锁的监控函数(可能会持锁很长时间)。
pg_signal_backend 向其他后端发送信号(例如:取消查询、中止)。
pg_read_server_files 允许使用COPY以及其他文件访问函数从服务器上该数据库可访问的任意位置读取文件。
pg_write_server_files 允许使用COPY以及其他文件访问函数在服务器上该数据库可访问的任意位置中写入文件。
pg_execute_server_program 允许用运行该数据库的用户执行数据库服务器上的程序来配合COPY和其他允许执行服务器端程序的函数。
pg_monitor 读取/执行各种监控视图和函数。这个角色是pg_read_all_settingspg_read_all_stats以及pg_stat_scan_tables的成员。

pg_read_server_filespg_write_server_files以及pg_execute_server_program角色的目的是允许管理员有一些可信但不是超级用户的角色来访问文件以及以运行数据库的用户在数据库服务器上运行程序。由于这些角色能够防伪服务器文件系统上的任何文件,因此在直接访问文件时它们会绕过任何数据库级别的权限检查并且它们可以被用来得到超级用户级别的访问,因此在把这些角色授予给用户时应当非常小心。

pg_monitorpg_read_all_settingspg_read_all_statspg_stat_scan_tables角色的目的是允许管理员能为监控数据库服务器的目的很容易地配置角色。它们授予一组常用的特权,这些特权允许角色读取各种有用的配置设置、统计信息以及通常仅限于超级用户的其他系统信息。

管理员可以用GRANT命令把对这些角色的访问授予给用户GRANT pg_signal_backend TO admin_user;

1.6 管理用户密码

-- 登录(psql)

psql -U admin postgres

-- alter命令修改用户密码:
alter user user_name with password 'new password'; -- # 注意密码是单引号`'`包围的内容,最后的`;`号 -- 修改密码过期时间:
alter user user_name with valid until '2021-01-01 08:00:00';
\du+ user_name -- 改为永不过期:
alter user user_name with valid until 'infinity'; -- 检查确认
select * from pg_user;
select * from pg_shadow;

[转帖]PG-用户|角色管理的更多相关文章

  1. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...

  2. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_five.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会 ...

  3. soanr - 企业用户角色管理

    首先sonar支持群组 即 支持企业角色权限管理,其次sonar支持单项目用户权限管理 即 外包,客户,外编人员用户权限管理. (视图内可看到源码) 按照 管路员.产品/项目管理.产品/项目开发.外包 ...

  4. 七天学会ASP.NET MVC (四)——Layout页面使用和用户角色管理 (代码下载)

    中文翻译链接: http://www.cnblogs.com/powertoolsteam/p/MVC_four.html 360云盘: https://yunpan.cn/cYuEeLtXUvrgC ...

  5. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  6. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

    接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...

  7. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  8. Oracle用户、权限、角色管理(转)

    http://blog.csdn.net/junmail/article/details/4381287 Oracle 权限设置一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户 ...

  9. Oracle用户、权限、角色管理

    Oracle 权限设置一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的).   二.系统权 ...

  10. [.Net MVC] 用户角色权限管理_使用CLK.AspNet.Identity

    项目:后台管理平台 意义:一个完整的管理平台需要提供用户注册.登录等功能,以及认证和授权功能. 一.为何使用CLK.AspNet.Identity 首先简要说明所采取的权限控制方式.这里采用了基于角色 ...

随机推荐

  1. 22、Scaffold属性 抽屉菜单Drawer

    在Scaffold组件里面传入drawer参数可以定义左侧边栏,传入endDrawer可以定义右侧边栏.侧边栏默 认是隐藏的,我们可以通过手指滑动显示侧边栏,也可以通过点击按钮显示侧边栏. class ...

  2. Flink实时处理入门

    Flink实时处理入门 1.Flink框架介绍 Flink 诞生于欧洲的一个大数据研究项目 StratoSphere.它是由 3 所地处柏林的大学和欧洲其他一 些大学在 2010~2014 年共同进行 ...

  3. 【华为云技术分享】解密如何使用昇腾AI计算解决方案构建业务引擎

    摘要:昇腾AI计算解决方案以极致算力,端边云融合.全栈创新,开放生态的硬核实力.用户可以使用标准的Matrix接口实现业务引擎,对外释放昇腾AI加速能力. 从卷积神经网络中的矩阵乘法(GEMM)说起 ...

  4. 亿级日活业务稳如磐石,华为云CodeArts PerfTest发布

    摘要:近日,华为云性能测试服务CodeArts PerfTest全新上线,提供低门槛.低成本的一站式云化性能测试解决方案. 本文分享自华为云社区<亿级日活业务稳如磐石,华为云CodeArts P ...

  5. GaussDB(DWS)云原生数仓技术解析

    摘要:本文主要介绍GaussDB(DWS)云原生数仓架构.产品能力,帮助开发者快速了解GaussDB(DWS)云原生数仓相关信息与能力. 本文分享自华为云社区<直播回顾 | GaussDB(DW ...

  6. AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发

    摘要: 华为云社区邀请到了AI Gallery的负责人严博,听他谈一谈AI Gallery的设计初衷.经典案例以及未来规划. 本文分享自华为云社区<AI专家一席谈:复用算法.模型.案例,AI G ...

  7. 顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

    摘要:针对时间序列离群点检测问题,提出了基于CNN-AutoEncoder和集成学习的CAE-ENSEMBLE深度神经网络算法,并通过大量的实验证明CAE-ENSEMBLE算法能有效提高时间序列离群点 ...

  8. 基于Serverless的端边云一体化媒体网络

    摘要:视频在边缘的创新方向在哪?下一代视频云平台什么样? 本文分享自华为云社区<探讨视频云与边缘云平台的竞争力--基于Serverless的端边云一体化媒体网络>,作者/卢志航,整理 / ...

  9. Axure 标记元件

    快照:可以用来表示控件的截图功能 箭头:有了连线,基本很少用它 便签:相关于便利贴,写些说明.备注, 标记:标记好数字,对应数字的标记做解释说明

  10. RTS超低延时直播技术:保障大型赛事直播零时差互动

    2022卡塔尔世界杯呼啸而来. 11月20日开幕,28天赛期.64场比赛,国际足联主席因凡蒂诺预计,卡塔尔世界杯将吸引全球50亿观众,可以说2022卡塔尔世界杯是这个冬天当之无愧的「超级流量场」. 世 ...