52 openEuler搭建PostgreSQL数据库服务器-管理数据库角色

news2024/9/24 3:27:41

文章目录

    • 52 openEuler搭建PostgreSQL数据库服务器-管理数据库角色
      • 52.1 创建角色
        • 创建角色示例
      • 52.2 查看角色
        • 查看角色示例
      • 52.3 修改角色
        • 52.3.1 修改用户名
        • 52.3.2 修改用户示例
        • 52.3.3 修改用户密码
        • 52.3.4 修改角色密码示例
      • 52.4 删除角色
        • 删除角色示例
      • 52.5 角色授权
        • 角色授权示例
      • 52.6 删除用户权限
        • 删除用户权限示例

52 openEuler搭建PostgreSQL数据库服务器-管理数据库角色

52.1 创建角色

可以使用CREATE ROLE语句或createuser来创建角色。createuser是对CREATE ROLE命令的封装,需要在shell界面执行,而不是在数据库界面。

CREATE ROLE rolename [ [ WITH ] option [ ... ] ];
createuser rolename

其中:

  • rolename:角色名。
  • option为参数选项,常用的有:
    • SUPERUSER | NOSUPERUSER:决定一个新角色是否为"超级用户",若未指定,则默认为NOSUPERUSER,即不是超级用户。
    • CREATEDB | NOCREATEDB:定义一个角色是否能创建数据库,若未指定,则默认为NOCREATEDB,即不能创建数据库。
    • CREATEROLE | NOCREATEROLE:决定一个角色是否可以创建新角色,若未指定,则默认为NOCREATEROLE,即不能创建新角色。
    • INHERIT | NOINHERIT:决定一个角色是否"继承"它所在组的角色的权限。一个带有 INHERIT 属性的角色可以自动使用已经赋与它直接或间接所在组的任何权限。若未指定,则默认为INHERIT。
    • LOGIN | NOLOGIN:决定一个角色是否可以登录,一个拥有LOGIN属性的角色可以认为是一个用户,若无此属性的角色可以用于管理数据库权限,但是并不是用户,若未指定,则默认为NOLOGIN。但若创建角色是使用的是CREATE USER而不是CREATE ROLE,则默认是LOGIN属性。
    • [ ENCRYPTED | UNENCRYPTED ] PASSWORD ‘password’:设置角色的密码,密码只对那些拥有 LOGIN 属性的角色有意义。ENCRYPTED | UNENCRYPTED表示是否对密码进行加密,若未指定,则默认为ENCRYPTED,即加密。
    • VALID UNTIL ‘timestamp’:角色的密码失效的时间戳,若为指定,则表示密码永久有效。
    • IN ROLE rolename1:列出一个或多个现有的角色,新角色rolename将立即加入这些角色,成为rolename1的成员。
    • ROLE rolename2:列出一个或多个现有的角色,它们将自动添加为新角色rolename的成员,即新角色为"组"。

要使用这条命令,必须拥有 CREATEROLE 权限或者是数据库超级用户。

创建角色示例

创建一个可以登录的角色roletest1。

postgres=# CREATE ROLE roletest1 LOGIN;
CREATE ROLE
postgres=#

创建一个密码为123456的角色roletest2。

postgres=# CREATE ROLE roletest2 WITH LOGIN PASSWORD '123456';
CREATE ROLE
postgres=#

创建角色名为roletest3的角色。。

[postgres@superman-21 ~]$ createuser roletest3
[postgres@superman-21 ~]$ 

52.2 查看角色

可以使用SELECT语句或psql的元命令\du查看角色。

SELECT rolename FROM pg_roles;
\du

其中:rolename:角色名。

查看角色示例

查看所有角色名。

postgres=# SELECT rolname from pg_roles;
          rolname          
---------------------------
 pg_monitor
 pg_read_all_settings
 pg_read_all_stats
 pg_stat_scan_tables
 pg_read_server_files
 pg_write_server_files
 pg_execute_server_program
 pg_signal_backend
 postgres
 roletest1
 roletest2
 roletest3
(12 行记录)

postgres=# 

查看现有角色。

postgres=# \du
                             角色列表
 角色名称  |                    属性                    | 成员属于 
-----------+--------------------------------------------+----------
 postgres  | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
 roletest1 |                                            | {}
 roletest2 |                                            | {}
 roletest3 |                                            | {}

postgres=# 

52.3 修改角色

52.3.1 修改用户名

可以使用ALTER ROLE语句修改一个已经存在的角色名。

ALTER ROLE oldrolername RENAME TO newrolename;

其中:

  • oldrolername:旧的角色名。
  • newrolename:新的角色名。

52.3.2 修改用户示例

将角色名roletest1修改为roletest4。

postgres=# ALTER ROLE roletest1 RENAME TO roletest4;
ALTER ROLE
postgres=# 

52.3.3 修改用户密码

可以使用ALTER ROLE语句修改一个角色的登录密码。

ALTER ROLE rolename PASSWORD 'password'

其中:

  • rolename:角色名。
  • password:密码。

52.3.4 修改角色密码示例

将roletest2的密码修改为456789。

postgres=# ALTER ROLE roletest2 WITH PASSWORD '456789';
ALTER ROLE
postgres=# 

52.4 删除角色

可以使用DROP ROLE语句或dropuser来删除角色。dropuser是对DROP ROLE命令的封装,需要在shell界面执行,而不是在数据库界面。

DROP ROLE rolename;
dropuser rolename

其中:rolename:角色名。

删除角色示例

删除roletest2角色。

postgres=# DROP ROLE roletest2;
DROP ROLE
postgres=# 

删除roletest3角色。。

[postgres@superman-21 ~]$ dropuser roletest3
[postgres@superman-21 ~]$ 

52.5 角色授权

可以使用GRANT语句来对角色授权。

对角色授予表的操作权限:

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

对角色授予序列的操作权限:

GRANT { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] 

对角色授予数据库的操作权限:

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE databasename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]  

对角色授予函数的操作权限:

GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]  

对角色授予过程语言的操作权限:

GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]  

对角色授予模式的操作权限:

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]  

对角色授予表空间的操作权限:

GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] 

将角色rolename1的成员关系赋予角色rolename2:

GRANT rolename1 [, ...] TO rolename2 [, ...] [ WITH ADMIN OPTION ]

其中:

  • SELECT、INSERT、UPDATE、DELETE、REFERENCES、TRIGGER、USAGE、CREATE、CONNECT、TEMPORARY、TEMP、EXECUTE、ALL [ PRIVILEGES ]:用户的操作权限,ALL [ PRIVILEGES ]表示所有的权限,PRIVILEGES 关键字在 PostgreSQL 里是可选的,但是严格的 SQL 要求有这个关键字。
  • ON字句:用于指定权限授予的对象。
  • tablename:表名。
  • TO字句:用来指定被赋予权限的角色。
  • rolename、rolename1、rolename2:角色名。
  • groupname:角色组名。
  • PUBLIC:表示该权限要赋予所有角色,包括那些以后可能创建的用户。
  • WITH GRANT OPTION:表示权限的接收者也可以将此权限赋予他人,否则就不能授权他人。该选项不能赋予给PUBLIC。
  • sequencename:序列名。
  • databasename:数据库名。
  • funcname ( [ [ argmode ] [ argname ] argtype [, …] ] ):函数名及其参数。
  • langname:过程语言名。
  • schemaname:模式名。
  • tablespacename:表空间名。
  • WITH ADMIN OPTION:表示成员随后就可以将角色的成员关系赋予其它角色,以及撤销其它角色的成员关系。

角色授权示例

对roletest4授予数据库database1的CREATE权限。

postgres=# GRANT CREATE ON DATABASE postgres TO roletest4;
GRANT
postgres=#

对所有用户授予表t1的所有权限。

postgres=# GRANT ALL PRIVILEGES ON TABLE t1 TO PUBLIC; 
GRANT
postgres=# 

52.6 删除用户权限

可以使用REVOKE语句来撤销以前赋予一个或多个角色的权限。

撤销角色对表的操作权限:

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...]

撤销角色对序列的操作权限:

REVOKE [ GRANT OPTION FOR ] { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]  

撤销角色对数据库的操作权限:

REVOKE [ GRANT OPTION FOR ] { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE databasename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] 

撤销角色对函数的操作权限:

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] 

撤销角色对过程语言的操作权限:

REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] 

撤销角色对模式的操作权限:

REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]  

撤销角色对表空间的操作权限:

REVOKE [ GRANT OPTION FOR ] { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] 

删除rolename2的rolename1的成员关系:

REVOKE [ ADMIN OPTION FOR ] rolename1 [, ...] FROM rolename2 [, ...] [ CASCADE | RESTRICT ]

其中:

  • GRANT OPTION FOR:表示只是撤销对该权限的授权的权力,而不是撤销该权限本身。
  • SELECT、INSERT、UPDATE、DELETE、REFERENCES、TRIGGER、USAGE、CREATE、CONNECT、TEMPORARY、TEMP、EXECUTE、ALL [ PRIVILEGES ]:用户的操作权限,ALL [ PRIVILEGES ]表示所有的权限,PRIVILEGES关键字在 PostgreSQL里是可选的,但是严格的SQL 要求有这个关键字。
  • ON字句:用于指定撤销权限的对象。
  • tablename:表名。
  • FROM字句:用来指定被撤销权限的角色。
  • rolename、rolename1、rolename2:角色名。
  • groupname:角色组名。
  • PUBLIC:表示撤销隐含定义的、拥有所有角色的组,但并不意味着所有角色都失去了权限,那些直接得到的权限以及通过一个组得到的权限仍然有效。
  • sequencename:序列名。
  • CASCADE:撤销所有依赖性权限。
  • RESTRICT:不撤销所有依赖性权限。
  • databasename:数据库名。
  • funcname ( [ [ argmode ] [ argname ] argtype [, …] ] ):函数名及其参数。
  • langname:过程语言名。
  • schemaname:模式名。
  • tablespacename:表空间名。
  • ADMIN OPTION FOR:表示传递的授权不会自动收回。

删除用户权限示例

对roletest4授予数据库postgres的CREATE权限。

postgres=# GRANT CREATE ON DATABASE postgres TO roletest4; 
GRANT
postgres=#

对所有用户授予表pg_proc的所有权限。

postgres=# GRANT ALL PRIVILEGES ON TABLE pg_proc TO PUBLIC;
GRANT
postgres=# 

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python旅游好帮手:提前15天准备五一旅游景点详细数据

人生苦短,我用python 虽然还是有15天才放五一的假, 但是我的心早已经在旅游的路上了~ 本文源码:点击此处跳转文末名片获取 趁现在,先来用python做一个旅游攻略 知识点: requests parsel csv 第三方库&#x…

python查看时间序列数据的季节规律matplotlib画时间(10分钟为间隔)序列坐标

目录0 问题描述1. 案例12. 案例2参考资料0 问题描述 将多个时间序列数据,绘制到一张图上,每段时间序列数据一般只有几个月,少则 1 个月左右,想看它们的季节规律,需要去除年份,只看月份。 也就是横轴是1月…

44.CSS Grid布局概述

什么是CSS Grid? ● CSS Grid 是一组用于构建二维布局的 CSS 属性 ● CSS Grid 背后的主要思想是我们将容器元素划分为行和列,这些行和列可以填充是子元素。 ● 在两段式语境中,CSS网格允许我们写出更少的嵌套HTML和更容易阅读的CSS ● CSS …

二分查找原理及使用场景

建议使用左闭右开区间[l, r)查找。二分查找的最后,索引l,r会落到右区间第一个元素位置。因此但凡是能够见数组分成左右两个区间的都能应用二分查找法。 1、普通查值 常见问题方式:寻找含重复值的有序数组 [...,a, tar, tar, tar,.b....]&am…

AI制药 - RCSB PDB 数据集的多维度分析与整理 (1)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130089781 整体: RCSB PDB 数据集是一个收集了蛋白质的三维结构信息的数据库,是世界蛋白质数据库(…

SQL SERVER调Web Service时候权限错误的解决

日期 2023/4/15 18:00:00 日志 作业历史记录 (AIPACS) 步骤 ID 1 服务器 GOOGLE 作业名称 AIPACS 步骤名称 RUNWS 持续时间 00:00:00 SQL 严重性 16 SQL 消息 ID 15281 已通过电子邮件通知的操作员 已通过…

MATLAB 基于空间格网的点云抽稀 (3)

MATLAB 基于空间格网的点云抽稀 (3) 一、实现效果二、原理步骤三、代码实现四、重点函数与对象的解释说明4.1 indices= pcbin(incloud,[rowNum colNum LayerNum]);4.2 occupancyGrid = cellfun(@(c) ~isempty(c), indices);4.3 outpointIndex = [];4.4 outpointIndex(end+1) …

基于ubuntu18.04上搭建OpenWRT-rtd1619环境

下载OpwnWRT的源码 下载路径:https://gitee.com/yangquan3_admin/rtd1619 您需要以下工具来编译 OpenWrt,包名称因发行版而异。 在 Build System Setup 文档中可以找到包含特定于发行版的软件包的完整列表。 binutils bzip2 diff find flex gawk gcc-6…

【Linux进阶篇】系统网络附加存储

目录 🍁NFS 🍂软件安装 🍂服务端配置 🍂客户端配置 🍂访问浏览器测试 🍁iscsi 🍂服务器端安装软件 🍂服务器端配置iscsi 🍂客户端软件安装配置 🍁常用的端口号…

这6个免费去水印工具,一定要码住!

现在很多平台会在用户保存图片/视频的时候自动给视频添加一个平台的水印,这在一定程度上影响了它的美观和使用。 下面我来分享几个图片/视频一键去水印方法,操作简单还不会损坏画质哦! 1. Magic Eraser 这是一个魔术橡皮擦在线网站&#x…

一文了解API接口自动化测试:让你在人才市场上无往不利

目录:导读 引言 架构 接口测试 API自动化测试 前后端分离的开发模式 测试工作: 协议 网络分层 三次握手的设计(很重要) 问题: URL:统一资源定位符 HTTP协议 (重点)HTTP的完整请求流程: 通信模…

springboot项目集成JWT实现身份认证(权鉴)

一、什么是JWT JSON Web Token (JWT),它是目前最流行的跨域身份验证解决方案。现在的项目开发一般都是前端端分离,这就涉及到跨域和权鉴问题。 二、JWT组成 由三部分组成:头部(Header)、载荷(Payload)与签名(signature) 头部(Head…

[测试新人必看] 测试报告如何编写? 掌握这五十个测试报告模板

作为一个曾经是测试萌新的我,在首次接收到一个任务时总有一种忐忑慌张激动紧张期望的复杂情绪~~ 忐忑慌张紧张是怕自己做不好,得不到领导的赏识;激动期望是哇塞,我有任务了耶,终于有我的用武之地了~~~ 就好比今天的主题…

Android 实现控件对称布局(约束布局和线性布局)

画界面时会遇到很多界面上的布局,虽然很简单,但是每次做起来不熟练,总结一下一些日常的 一.实现界面上的两个空间对称布局 方法一、用约束布局的guideLine.适用于两个控件不确定宽高,且约束条件较多 Guideline是只能用在Constra…

linux安装并发送邮件

linux安装、配置并发送邮件(以CentOS7.9为例) 1、安装邮箱软件 yum install mailx -y2、 配置邮箱(以qq邮箱为例) 2.1 网页访问并登录:https://mail.qq.com/ 2.2 选择“设置->账户” 2.3 在账户下面找到POP3/IMAP/…

【广州华锐互动】VR数字虚拟展厅为企业提升品牌形象和知名度

VR数字虚拟展厅是一种利用虚拟现实技术来展示企业产品和服务的全新宣传方式,与传统展厅相比具有出色的互动功能和沉浸体验感,参观者可以随时随地进入虚拟环境中进行参观,感受全新视听觉的体验。 VR数字虚拟展厅能够带来很多优势和好处&#x…

Flink 优化(六) --------- FlinkSQL 调优

目录一、设置空闲状态保留时间二、开启 MiniBatch三、开启 LocalGlobal四、开启 Split Distinct五、多维 DISTINCT 使用 Filter六、设置参数总结FlinkSQL 官网配置参数: https://ci.apache.org/projects/flink/flink-docs-release-1.13/dev/table/config.html 一、…

Zookeeper源码分析——算法基础

Zookeeper高级 Paxos 算法 Paxos算法:一种基于消息传递且具有高度容错特性的一致性算法。 Paxos算法解决的问题:就是如何快速正确的在一个分布式系统中对某个数据值达成一致,并且保证不论发生任何异常, 都不会破坏整个系统的一…

回溯递归(例题+思路+代码)

题目描述 leetcode 77 思路 组合问题适合用回溯求解。 经典解法&#xff1a;for循环 内部回溯。 每次进入回溯方法时&#xff0c;先判断终止条件&#xff0c;再进行当前层的循环&#xff0c;循环进行下一层递归。 代码 class Solution {public List<List<Integer&…

【C++入门必备知识:缺省参数+函数重载+函数名修饰规则】

【C入门必备知识&#xff1a;缺省参数函数重载函数名修饰规则】 ①.缺省参数Ⅰ.概念1.全缺省参数2.半缺省参数3.使用规则4.应用场景再现 ②.函数重载Ⅰ.概念1.参数个数不同2.参数类型不同3.参数类型顺序不同4.对返回值没有要求 ③.函数名修饰规则Ⅰ.C/C的不同 ①.缺省参数 Ⅰ.…