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

【PG】PostgresSQL角色管理

目录

角色概念

查询现有角色

列出当前角色 

创建角色

删除角色

更改角色 

创建角色举例

预定义角色

角色属性

登陆角色

超级用户角色

创建数据库角色

创建role角色

复制角色

创建带有密码的角色

角色成员关系

角色组概念

角色组增加成员

角色组移除成员

删除角色

默认角色


角色概念

PostgreSQL使用角色的概念管理数据库访问权限。一个角色可以被看成是一个数据库用户或者是一个数据库用户组,这取决于角色被怎样设置。角色可以拥有数据库对象(例如,表和函数)并且能够把那些对象上的权限赋予给其他角色来控制谁能访问哪些对象。此外,还可以把一个角色中的成员资格授予给另一个角色,这样允许成员角色使用被赋予给另一个角色的权限。

角色的概念把“用户”和“组”的概念都包括在内。在PostgreSQL版本 8.1 之前,用户和组是完全不同的两种实体,但是现在只有角色。任意角色都可以扮演用户、组或者两者

 重点:角色 == 用户 或 角色 == 用户组

查询现有角色

 select rolname from pg_roles;

列出当前角色 

\du

创建角色

create role name login;等同于create user name;

删除角色

drop role name;等同于drop user name;

更改角色 

ALTER ROLE — 更改一个数据库角色;

alter role role3 login;

创建角色举例

# 只有登录权限的角色create role onlylogin LOGIN;# 具有创建数据库 创建角色 登录的角色create user admin with CREATEDB CREATEROLE;# 创建一个带有密码 并且 密码有效期截止到2025-01-01的角色CREATE ROLE testlogin WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2025-01-01';

预定义角色

为了引导数据库系统,一个刚刚被初始化好的系统总是包含一个预定义角色。这个角色总是一个“superuser”,并且默认情况下(除非在运行initdb时修改)它的名字和初始化数据库集簇的操作系统用户相同。习惯上,这个角色将被命名为postgres。为了创建更多角色,你首先必须以初始角色的身份连接。

重点:超级用户和初始化数据库的操作系统用户名称相同,一般是postgres。

角色属性

登陆角色

CREATE ROLE name LOGIN;
等同于
CREATE USER name;

CREATE USERCREATE ROLE等效,除了CREATE USER默认带有LOGIN,而CREATE ROLE创建的角色不带有LOGIN

超级用户角色

一个数据库超级用户会绕开所有权限检查。这是一个危险的权限并且应该小心使用,最好用一个不是超级用户的角色来完成你的大部分工作,创建该角色的用户必须是一个超级用户。

CREATE ROLE name SUPERUSER

创建数据库角色

一个角色必须被显式给予创建数据库的权限才能创建数据库

CREATE ROLE name CREATEDB;

创建role角色

一个角色必须被显式给予权限才能创建更多角色(除了超级用户,因为它们会绕开所有权限检查)。一个带有CREATEROLE权限的角色也可以修改和删除其他角色,还可以授予或回收角色中的成员关系。然而,要创建、修改、删除或修改一个超级用户角色的成员关系,需要以超级用户的身份操作。CREATEROLE不足以完成这一切

CREATE ROLE name CREATEROLE

复制角色

一个角色必须被显式给予权限才能发起流复制(除了超级用户,因为它们会绕开所有权限检查)。一个被用于流复制的角色必须也具有LOGIN权限。

CREATE ROLE name REPLICATION LOGIN。

创建带有密码的角色

CREATE ROLE name PASSWORD 'string';

角色成员关系

角色组概念

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

创建角色组和创建角色相同

CREATE ROLE name;

角色组增加成员

向角色组 group_role 中增加曾院 role1 ;role1 和 group_role组具有相同角色

GRANT group_role TO role1, ... ;

角色组移除成员

REVOKE group_role FROM role1, ... ;

删除角色

默认角色

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

参考 

ALTER ROLE

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

相关文章:

  • 百度智能云获评Forrester中国市场人工智能/机器学习平台领导者
  • 基于java+swing+mysql实现的仓库商品管理系统
  • 深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
  • 【无标题】读书笔记之《智能化社会:未来人们如何生活、相爱和思考》
  • 华为云双十一服务器数据中心带宽全动态BGP和静态BGP区别
  • STM32 HAL库串口使用printf
  • 【VPX610】 青翼科技基于6U VPX总线架构的高性能实时信号处理平台
  • Parity 战略转型引热议,将如何推动波卡生态去中心化?
  • 【TES641】基于VU13P FPGA的4路FMC接口基带信号处理平台
  • Spring Kafka生产者实现
  • 手把手教你入门Three.js(初识篇)
  • Hadoop学习总结(搭建Hadoop集群(伪分布式模式))
  • 人性与理性共赢,真心罐头跃过增长的山海关
  • 【Redis】Docker部署Redis数据库
  • 【目标跟踪】多目标跟踪测距
  • 吐血整理,服务端性能测试-Docker部署MySQL/Nginx(详细步骤)
  • 基于单片机设计的智能窗帘控制系统
  • WSL的秘钥被修改了要怎么弄
  • cesium开发引入方式
  • 无缝的链间互操作性:通用消息传递的强大之处
  • minio + linux + docker + spring boot实现文件上传与下载
  • vue ant DatePicker 日期选择器 限制日期可控范围
  • linux 音视频架构 linux音视频开发
  • el-table添加固定高度height后高度自适应
  • Python分享之多进程探索 (multiprocessing包)
  • Boris FX Mocha Pro 2023:Mac/win全能影像处理神器
  • elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行
  • mac电脑视频处理推荐:达芬奇DaVinci Resolve Studio 18 中文最新
  • OKLink携手CertiK在港举办Web3生态安全主题论坛
  • 王道p40 1.设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点(c语言代码实现)图解递归