OpenGauss数据库创建新用户

发布时间 2023-06-08 16:06:35作者: 呼长喜

Table of Contents

 

经过前三天的学习和复习,不断夯实基础,学会了使用gsql工具及对应的元命令,学会了一些简单的sql语句,了解了一些浅显的数据库及表结构的知识。
摩拳擦掌中,迎来了第四天的学习内容,创建新用户,并灵活使用,让我们一起来学习吧!

学习目标

学习openGauss体系结构,使用多个用户访问同一个数据库,归结为如下几点:

1. 创建新用户

2. 使用新用户访问数据库

3. 使用新用户查看数据库中有哪些表

学习内容

摘要

创建user1、user2、user3用户,验证数据库musicdb可以被用户user1、user2、user3访问(分别在数据库中创建了一张表、插入数据、进行查询)。即一个数据库可以被多个用户访问。

课前准备

如果您充满活力和学习热情,一口气从第一课学到第四课,此时,您的数据库中可能已经有了一些 tablespace 和 database,为避免重复,影响接下来的学习的顺利程度,有必要做如下课前准备:

--进入数据库omm,创建表空间、测试数据库
drop DATABASE  IF EXISTS  musicdb;
drop DATABASE  IF EXISTS  musicdb1;
drop DATABASE  IF EXISTS  musicdb2;
drop DATABASE  IF EXISTS  musicdb3;
drop TABLESPACE IF EXISTS music_tbs;

CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;

注:
drop [DATABASE/TABLESPACE] IF EXISTS <table_name>,如果该表/表空间已存在,则删除。如果不存在,则跳过此命令。

结果:
1.png

1. 创建用户user1、user2、user3

创建新用户,并赋予管理员权限,这样我们可以随心所欲的使用账户,查看表空间及表。
执行语句如下:

--执行下面的SQL语句,创建用户user1、user2、user3:

 CREATE USER user1 IDENTIFIED BY 'kunpeng@1234';
 CREATE USER user2 IDENTIFIED BY 'kunpeng@1234';
 CREATE USER user3 IDENTIFIED BY 'kunpeng@1234';
 
--授予user1、user2、user3数据库系统的SYSADMIN权限:

ALTER USER user1 SYSADMIN;
ALTER USER user2 SYSADMIN;
ALTER USER user3 SYSADMIN;

--执行下面的命令,查看有哪些用户:
 \du

注:
CREATE USER <user_name> IDENTIFIED BY ,创建用户,并指定密码。
ALTER USER <user_name> SYSADMIN,授予该用户管理员(SYSADMIN)权限。

结果:
2.png

我们可以在用户表中,清晰的看到,拥有管理员权限的user1、user2及user3。

2. 在终端中,分别使用user1、user2、user3用户访问数据库musicdb。

既然已经创建好全新的用户了,我们自然要测试一下新用户是否能访问数据库了。

 --以用户user1的身份在数据库musicdb中创建表t1,并插入一条数据:
 \c musicdb user1
  
  create table t1(col1 char(20));
  insert into t1 values('Hello kunpeng 1');
  select * from t1;
 
--以用户user2的身份在数据库musicdb中创建表t2,并插入一条数据:
  \c musicdb user2

  create table t2(col1 char(20));
  insert into t2 values('Hello kunpeng 2');
  select * from t2;


--以用户user3的身份在数据库musicdb中创建表t3,并插入一条数据:
  \c musicdb user3

  create table t3(col1 char(20));
  insert into t3 values('Hello kunpeng 3');
  select * from t3;

还记得元命令 \c 吗,使用该元命令可以用新建的user1连接musicdb。
当然你需要输入对应的密码。
这里要注意,如果不输入用户,则使用默认的 omm 用户,也可以登录数据库并使用。

3.png

结果:
4.png

3. 使用user1、user2、user3用户中的任何一个,执行**\dt**命令,查看当前数据库musicdb有哪些表。

\db \l \dt,还记的这些元命令都能干什么吗。

 \dt 

结果:image.png

课程作业

1.创建用户user1、user2、user3,授予user1、user2、user3数据库系统的SYSADMIN权限

在课程学习的过程中,已经创建了user1、user2、user3,所以我尝试使用 drop 删除用户。

结果:
image.png

可以看到,因为使用user1创建了名为t1的表,所以此时无法删除,那么我尝试删除t1后,再删除用户。
不知道是否有可以直接获取user1的table并删除的语句,之后问问群里大佬。

2.分别使用user1、user2、user3访问数据库musicdb2,创建各自的表,并插入数据。表名和数据如下:

表名分别为: products1、 products2、 products3

字段名数据类型含义
product_id INTEGER 产品编号
product_name Char(20) 产品名
category Char(30) 种类

向表中插入数据:

product_idproduct_namecategory
1502 olympus camera electrncs
1601 lamaze toys
1700 wait interface Books
1666 harry potter toys

终于需要自己编写一段sql了,待我好好研究研究。

可以看到,建表语句有几部分组成:

  1. 创建表,CREATE DATABASE <table_name>,创建一个名为<table_name>的表
  2. 组成表的字段名、数据类型及注释,在括号中写明字段,数据类型及注释,用空格分割,每一列用逗号分割
  3. 插入数据,INSERT INTO <table_name>
  4. 组成插入数据的内容,在括号中写明列名,VALUES 后的括号中写明一条数据的内容,有几条就有几个括号,每条内容用逗号分割

示例如下:

-- 因为没有数据库musicdb2,所以要先建一个
CREATE DATABASE musicdb2  WITH TABLESPACE = music_tbs;

-- 使用user1用户,建表并插入数据
\c musicdb2 user1

-- 建表语句
CREATE TABLE products3(
	product_id INTEGER,
	product_name CHAR(20),
	category CHAR(30)
);

-- 插入语句
INSERT INTO products1(
product_id,product_name,category
) values(
1502,'olympus camera','electrncs'
),(
1601,'lamaze','toys'
),(
1700,'wait interface','Books'
),(
1666,'harry potter','toys'
);
-- 查询结果
select * from products1;

在虚拟环境的实际使用中,本打算使用COMMENT添加注释,发现有语法错误,所以暂不添加,有机会问群里大佬们

结果:
image.png

3.使用user1、user2、user3用户中的任何一个,查看当前数据库musicdb2有哪些表:

见上图