暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第4天 | 创建、修改和删除角色

原创 YAN左使 2021-12-21
598

openGauss每日一练第四天的学习笔记!

  • 学习目标:学习openGauss创建角色、修改角色属性、更改角色权限和删除角色。
  • 实验环境:openGuass 2.0.0,实验环境使用由墨天轮提供的数据库线上环境,非常方便!

数据库中用户和角色是用来管理权限的,涉及到数据库安全管理层面的知识。

数据库对象创建后,进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。

为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角色上,这就是数据库角色的作用

关于用户: 参考openGuass2.1.0文档关于用户的说明

  • openGauss包含一个或多个已命名数据库。用户和角色在整个openGauss范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。
  • 非三权分立下,openGauss用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。
  • 三权分立时,用户帐户只能由初始用户和安全管理员创建。
  • 在用户登录openGauss时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪个对象。
  • 除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。

关于角色: 参考openGauss2.1.0文档关于角色的说明

  • 角色是一组用户的集合。
  • 通过GRANT把角色授予用户后,用户即具有了角色的所有权限。
  • 推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。
  • 在角色级别授予或撤消权限时,这些更改将作用到角色下的所有成员。
  • 非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。
  • 三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。
  • openGauss提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。
  • openGauss提供了一个隐式定义的拥有所有角色的组PUBLIC,所有创建的用户和角色默认拥有PUBLIC所拥有的权限。关于PUBLIC默认拥有的权限请参考GRANT。要撤销或重新授予用户和角色对PUBLIC的权限, 可通过在GRANT和REVOKE指定关键字PUBLIC实现。

1. 连接openGauss数据库

以omm用户连接openGauss数据库:

su - omm gsql -r

image.png
omm用户是openGauss数据库安装和使用过程一个非常重要的用户。关于omm用户,请参考:

  • 了解安装用户及用户组,其中提到了两个重要的用户:omm为数据库管理员(也是运行openGauss的操作系统用户),dbgrp为运行openGauss的操作系统用户的群组名。在安装openGauss过程中运行“gs_install”时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。
  • 执行安装,安装openGauss的过程,需要确保omm用户需要拥有安装包所在目录及子目录的权限。安装脚本gs_install必须以前置脚本中指定的omm执行,否则,脚本执行会报错。

2. 查看已有的roles

通过\du或者\du+命令查看所有的roles:可以看到初始状态下有两个名为gaussdb和omm的角色:
image.png

3.创建角色

创建role1为系统管理员, role2指定生效日期, role3具有LOGIN属性:

CREATE ROLE role1 SYSADMIN IDENTIFIED BY 'role1_12345';

image.png

CREATE ROLE role2 WITH LOGIN PASSWORD 'role2_12345' VALID BEGIN '2021-12-21' VALID UNTIL '2021-12-30';

image.png

CREATE ROLE role3 LOGIN IDENTIFIED BY 'role1_12345';

image.png

使用\du命令查看:
image.png

4.重命名role1

ALTER ROLE role1 RENAME TO role10;

image.png

5.修改role2密码

ALTER ROLE role2 IDENTIFIED BY 'role2_12345678';

image.png

6.权限授权和权限回收

将omm权限授权给role3,再回收role3的权限

GRANT omm TO role3 WITH ADMIN OPTION; REVOKE ALL PRIVILEGE FROM role3;

image.png

7.删除所有创建角色

DROP ROLE role10; DROP ROLE role2; DROP ROLE role3;

image.png

最后修改时间:2021-12-21 09:27:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论