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

openGauss每日一练第5天 | 创建、修改和删除用户

原创 YAN左使 2021-12-21
1511

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和users

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

3.创建用户

创建用户user1、user2和user3,user1具有CREATEROLE权限,user2具有CREATEDB权限,要求使用两种不同的方法设置密码

CREATE USER user1 CREATEROLE IDENTIFIED BY 'user1_12345'; CREATE USER user1 CREATEROLE PASSWORD 'user1_12345';

image.png

CREATE USER user2 CREATEDB IDENTIFIED BY 'user2_12345'; CREATE USER user2 CREATEDB PASSWORD 'user2_12345';

image.png

CREATE USER user3 IDENTIFIED BY 'user3_12345'; CREATE USER user3 PASSWORD 'user3_12345';

image.png

4.修改用户user1的密码

ALTER USER user1 IDENTIFIED BY 'user1_abcde'; ALTER USER user1 PASSWORD 'user1_abcdef';

image.png

5.重命名用户user2

ALTER USER user2 RENAME TO user20;

image.png

6.权限授权和回收

将用户user1的权限授权给用户user3,再回收用户user3的权限

GRANT user1 TO user3; REVOKE user1 FROM user3;

image.png

注意这里回收权限非常容易写错为:

REVOKE user3 FROM user1;

REVOKE后面跟的是属于权限的用户即user1,而FROM后面跟的是被授予权限的用户即user3,如果写反了会有warning提示:
image.png

7.删除所有创建用户

DROP USER user1; DROP USER user20; DROP USER user3;

image.png

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

评论