openGauss开源数据库实战十八

news2024/12/27 3:57:17

文章目录

  • 任务十八 openGauss逻辑结构:构:用户和权眼管理
    • 任务目标
    • 实施步骤
      • 一、准备工作
      • 二、用户和角色管理
        • 1.使用`CREATE USER`语句创建用户
        • 2.使用`CREATE ROLE`语句创建用户
        • 3.删除用户和角色
      • 三、权限管理
        • 1.系统权限
        • 清理工作

任务十八 openGauss逻辑结构:构:用户和权眼管理

任务目标

掌握openGauss的用户管理以及权限管理。

实施步骤

一、准备工作

为了进行测试,执行下面的命令和语句,创建一个名为test_ts的表空间和一个名为testdb的数据库:

gsql -d postgres -p 26000 -r
CREATE TABLESPACE test_ts RELATIVE LOCATION 'tablespace/test_ts1';
CREATE DATABASE testdb WITH TABLESPACE = test_ts;

二、用户和角色管理

1.使用CREATE USER语句创建用户

执行下面的SOL语句,创建一个名为test的数据库用户,其密码为test@ustb2020,并将数据库testdb所有的权限都授予用户test:

CREATE USER test IDENTIFIED BY 'test@ustb2020';
GRANT ALL ON DATABASE testdb TO test;

执行下面的gsql元命令,查看系统目前有哪些数据库:

\l

可以看出,经过授权后用户test对数据库testdb具有了权限。
执行下面的gsql元命令,查看系统目前有哪些用户:

\du

为Linux用户omm打开一个新的Linux终端窗口,执行下面的gsql命令,用刚刚创建的数据库用户test登录到数据库testdb:

gsql -d testdb -h 192.168.100.91 -U test -p 26000 -W test@ustb2020 -r
\q

可以看到,使用CREATEUSER语句创建的用户可以成功连接到openGaussDBMS。
在这里插入图片描述

2.使用CREATE ROLE语句创建用户

打开一个新的Linux终端窗口,执行下面的命令和SQL语句,创建一个新的名为tset的角色,并将数据库testdb所有的权限都授予用户tset:

gsql -d postgres -p 26000 -r
CREATE ROLE tset IDENTIFIED BY 'tset@ustb2020';
GRANT ALL ON DATABASE testdb TO tset;
\l

可以看出,用户tset对数据库testdb具有的权限和用户tset一模一样。
执行gsql元命令\du,查看当前openGauss数据库集群有哪些用户:

\du

从上面的输出可以看出,使用CREATEROLE语句创建的用户tset没有登录权限。下面的实验验证了这一点。执行下面的命令退出gsql:

\q

打开一个新的Linux终端窗口,使用刚刚创建的数据库用户tset尝试登录到数据库testdb:

gsql -d testdb -h 192.168.100.91 -U tset -p 26000 -W tset@ustb2020 -r

上面的输出显示,由于数据库用户tset是使用CREATE ROLE语句创建的,目前还不被允许登录到openGauss DBMS。
执行下面的命令和SOL语句,授予用户tset登录权限:

gsql -d postgres -p 26000 -r
alter user tset LOGIN;
\q

实验结论:使用CREATE USER语句创建的用户与使用CREATE ROLE语句创建的用户的区别在于,前者可以直接登录到数据库,而后者不能直接登录到数据库,必须添加LOGIN权限后,才能登录到数据库管理系统。
在这里插入图片描述

3.删除用户和角色

删除用户时需要首先将用户拥有的数据库对象转移或者删除。打开一个新的Linux终端窗口(命名为窗口1),执行下面的命令,授予用户tset SYSADMIN权限:

gsql -d postgres -p 26000 -r
ALTER USER tset SYSADMIN;

使用Linux用户omm,打开一个新的Linux终端窗口(命名为窗口2),使用数据库用户tset登录到数据库testdb,创建表空间ttt_ts、数据库tttdb、表ttt1和表ttt2:

gsql -d testdb -h 192.168.100.91 -U tset -p 26000 -W tset@ustb2020 -r
CREATE TABLESPACE ttt_ts RELATIVE LOCATION 'tablespace/ttt_ts1';
CREATE DATABASE tttdb WITH TABLESPACE = ttt_ts;
CREATE TABLE ttt1(col int);
CREATE TABLE ttt2(col int);

回到窗口1,执行如下的命令,删除用户tset:

drop user tset;

可以看出,不能删除用户tset的原因是:
1)用户tset拥有数据库ttdb。
2)用户tset拥有表空间对象tt_ts。
3)用户tset对数据库testdb具有权限。
4)用户tset在数据库testdb中有两个对象。
要删除用户tset,必须先将表空间对象和数据库对象的属主修改为其他的用户(如用户test),或者干脆将其删除。在窗口1中运行下面的SQL语句:

alter database tttdb owner to test;
alter tablespace ttt_ts owner to test;

在窗口1中运行下面的SQL语句,回收用户tset对数据库testdb的权限:

REVOKE ALL ON DATABASE testdb FROM tset;

对数据库testdb中属于用户tset的数据库对象的处理方法是:假如该对象还有用,可以将该对象转移给其他用户;假如该对象没有用,可以直接删除该对象。
转到窗口2,执行如下命令:

\dt

假设表ttt1已经没有用了,我们可以删除表t1。在窗口2中执行如下SQL语句:

drop table ttt1;

假设表ttt2还有用,在窗口2中执行如下SQL语句,将表tt2转移给用户test:

REASSIGN OWNED BY tset to test;

注意:DROP OWNED命令不能删除表空间和数据库
完成以上步骤后,我们转到窗口1,可以执行删除用户的操作了:

DROP OWNED BY tset;
\q

三、权限管理

1.系统权限

执行下面的命令,授予用户test SYSADMIN权限:

gsql -d postgres -p 26000 -r
ALTER USER test SYSADMIN;
\q
清理工作
gsql -d postgres -p 26000 -r
drop database tttdb;
drop database testdb;
drop tablespace ttt_ts;
drop tablespace test_ts;
drop user test
\q

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

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

相关文章

Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️

🎮 Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️🌍 今天给大家推荐一款精彩绝伦的Scratch平台冒险游戏——《我的世界:平台冒险 – 第二章》!由atomicmagicnumber制作,这…

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…

北斗道路运输车辆管理应用:违规驾驶行为监测、车辆编队管理、安全跟踪(车辆历史轨迹查询)、车辆动态位置数据的实时查看和管理

文章目录 场景概述解决方案应用案例合作构想场景概述 面向旅游大巴车、危险品运输车及重型载货运输车等车辆,利用北斗定位导航服务,结合互联网通信技术,实现车辆安全驾驶管理与调度,有效降低道路事故发生风险,提升道路运输管理水平及车辆调度能力。 解决方案 在车辆上安…

【ABAP——DAILOG_2】

文章目录 使用Tabstrip控件实现分页签效果标签页的修改使用Table Control控件实现表单输出表格控件使用向导创建Table ControlTable Control列的修改 用户通过界面输入数据,数据通过屏幕控件传递到ABAP/4程序中的变量,程序在PBO中准备数据并显示界面&…

资料文件夹转移工具5.2.3 |快速转移到D盘,释放C盘空间

这是一款支持将C盘的常用文件夹转移到其他磁盘分区的工具,提供仅变目录、复制资料和转移资料三种转移方式。该工具完全免费,单文件免安装,大小仅为546KB,非常适合需要释放C盘空间的用户。 大小:546KB 下载地址&#…

使用STM32CubeMX配置串口各种功能

使用STM32CubeMX配置串口各种功能 STM32CubeMX软件的安装接收空闲中断STM32CubeMX配置1.新建工程2. 选择芯片3. 选择时钟和下载方式4. 配置串口5.设置工程消息6.生成代码7.修改生成的代码 空闲中断DMA转运STM32CubeMX配置4.配置串口5.设置工程消息6.生成代码7.修改生成的代码 S…

Javascript中DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)

#如何去实现图片轮播效果图,通过创建一个基本的 HTML 页面结构,包含用于展示轮播图片的区域、左右切换箭头以及放置轮播图片的容器。# 整体架构 一、CSS 样式 接下来创建一个 styles.css 文件来设置页面的样式,让轮播效果看起来更美观。定义…

无人设备遥控器之防水性能篇

无人设备遥控器的防水性能是评估其耐用性和适应不同环境能力的重要指标。随着无人设备技术的不断发展,越来越多的遥控器在设计时融入了防水元素,以满足用户在不同天气条件下的使用需求。 一、防水等级与标准 无人设备遥控器的防水性能通常通过防水等级来…

【JAVA】Java入门 - 循环结构进阶

第1关 for循环的进阶使用-嵌套循环(1) 第2关 for循环的进阶使用-嵌套循环(2) 第3关 99乘法表 第4关 综合练习之ATM取款机 第5关 选择题 D、BC、B

【AI系统】AI 编译器后端优化

AI 编译器后端优化 AI 编译器分为多层架构,最顶层由各种 AI 训练框架编写的神经网络模型架构,一般由 Python 编写,常见的 AI 训练框架有 PyTorch、MindSpore、PaddlePaddle 等。在导入 AI 编译器时需要用对应框架的 converter 功能转换为 AI…

力扣 三角dp

动态规划基础题,当前所在元素来自上一行的两列的值。 题目 从图可以看出,每一行的第一个数与最后一个数都是1,然后中间的数是来自它左上方和右上方的数的和。当然并不是要打印这个三角形的形状,因此可以想到正常的打印方式应该是…

Oracle检查加强版本

支持更丰富了,代码也更乱了 #!/bin/bash## 实例个数 告警日志 实例状态 会话 活动会话 锁 集群状态 服务状态 磁盘空间 侦听日志 ## 单机、RAC Linux、AIX 11g、19c、23ai ## 依赖adrci配置正常,也可以改为 getAlert() ## ver 1.2case uname inAIX)ps…

RoBERTa- 稳健优化的 BERT 预训练模型详解

一、引言 自 BERT(Bidirectional Encoder Representations from Transformers)问世,预训练语言模型在自然语言处理(NLP)领域掀起革命浪潮,凭卓越表现大幅刷新诸多任务成绩。RoBERTa 承继 BERT 架构&#x…

【流程图】各元素形状和含义

判定、文档、数据、数据库、流程处理节点 矩形 - 动词 平行四边形 - 图像 下波浪 - 数据 图片来源http://baike.cu12.com/bkss/62449.shtml

「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器

本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的…

PyQt6 开发基础

<?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Form</class><widget class"QWidget" name"Form"><property name"geometry"><rect><x>0<…

Kafka如何保证消息可靠?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka如何保证消息可靠&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka如何保证消息可靠&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性&#xff0c;主要包…

pytest(二)excel数据驱动

一、excel数据驱动 excel文件内容 excel数据驱动使用方法 import openpyxl import pytestdef get_excel():excel_obj openpyxl.load_workbook("../pytest结合数据驱动-excel/data.xlsx")sheet_obj excel_obj["Sheet1"]values sheet_obj.valuescase_li…

类和对象(中)(类的默认成员函数)+日期类实现

1.类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成语函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成6个默认成员函数。C11后还增加了两个默认成员函数&#xff0c;移动构造和移动赋值&#xff08;这一节暂时…

详解版本控制工作原理及优势,常见的版本控制系统对比(HelixCore、Git、SVN等)

什么是版本控制软件&#xff1f;从基础层面来说&#xff0c;版本控制&#xff08;也可称版本管理&#xff09;就是随时间跟踪和管理文件变更的过程&#xff0c;而版本控制软件有助于实现这一过程的自动化。但这仅仅是其功能及其重要性的开端。 什么是版本控制&#xff1f; 版本…