【openGauss】openGauss 中一个数据库可以被多个用户访问

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

1.测试环境准备:

sql 复制代码
su - omm
gsql -r
--进入数据库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;

 \set PROMPT1 '%n@%m %~%R%#'
CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;

2.创建用户 user1、user2、user3

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

sql 复制代码
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权限:

sql 复制代码
ALTER USER user1 SYSADMIN;
ALTER USER user2 SYSADMIN;
ALTER USER user3 SYSADMIN;

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

sql 复制代码
 omm@local ~=#\du
                                                              List of roles
 Role name |                                                    Attributes   
                                                 | Member of 
-----------+-----------------------------------------------------------------
-------------------------------------------------+-----------
 gaussdb   | Sysadmin                                                        
                                                 | {}
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit,
 Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 user1     | Sysadmin                                                        
                                                 | {}
                                                 | {}

 user2     | Sysadmin                                                        
                                                 | {}
 user3     | Sysadmin     

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

--以用户 user1 的身份在数据库 musicdb 中创建表 t1,并插入一条数据:

sql 复制代码
 \set PROMPT1 '%n@%m %~%R%#'
 \c musicdb user1
  
  create table t1(col1 char(20));
  insert into t1 values('Hello kunpeng 1');
  select * from t1;

--以用户 user2 的身份在数据库 musicdb 中创建表 t2,并插入一条数据:

sql 复制代码
 \set PROMPT1 '%n@%m %~%R%#'
  \c musicdb user2

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

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

sql 复制代码
  \c musicdb user3

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

4.使用 user1、user2、user3 用户中的任何一个,执行如下命令,查看当前数据库 musicdb 有哪些表:

sql 复制代码
user3@local musicdb=>\dt
                        List of relations
 Schema | Name | Type  | Owner |             Storage              
--------+------+-------+-------+----------------------------------
 public | t1   | table | user1 | {orientation=row,compression=no}
 public | t2   | table | user2 | {orientation=row,compression=no}
 public | t3   | table | user3 | {orientation=row,compression=no}
(3 rows)

user3@local musicdb=>

举例

1.创建用户 user01、user02、user03,授予 user01、user02、user03 数据库系统的 SYSADMIN 权限

sql 复制代码
\set PROMPT1 '%n@%m %~%R%#'
\du
create user user01 identified by 'JiekeXu_1234';
create user user02 identified by 'JiekeXu_1234';
create user user03 identified by 'JiekeXu_1234';

--授权

sql 复制代码
alter user user01 SYSADMIN;
alter user user02 SYSADMIN;
alter user user03 SYSADMIN;

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

表名分别为: products1、 products2、 products3

字段名 数据类型
product_id INTEGER
product_name Char(20)
category Char(30)

向表中插入数据:

sql 复制代码
product_id 	product_name 	category
1502 	olympus camera 	electrncs
1601 	lamaze 	toys
1700 	wait interface 	Books
1666 	harry potter 	toys
create tablespace musicdb2_tbs relative location 'tablespace/musicdb2_tbs';
create database musicdb2 with tablespace = musicdb2_tbs;

\c musicdb2  user01
create table products1(product_id int,product_name Char(20), category Char(30)); 
insert into products1 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
select * from products1;

\c musicdb2  user02
create table products2(product_id int,product_name Char(20), category Char(30)); 
insert into products2 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
select * from products2;

\c musicdb2  user03
create table products3(product_id int,product_name Char(20), category Char(30)); 
insert into products3 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
select * from products3;
sql 复制代码
user03@local musicdb2=>select * from products1;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)

user03@local musicdb2=>select * from products2;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)


user03@local musicdb2=>select * from  products3;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)

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

sql 复制代码
user03@local musicdb2=>\dt
                           List of relations
 Schema |   Name    | Type  | Owner  |             Storage              
--------+-----------+-------+--------+----------------------------------
 public | products1 | table | user01 | {orientation=row,compression=no}
 public | products2 | table | user02 | {orientation=row,compression=no}
 public | products3 | table | user03 | {orientation=row,compression=no}
(3 rows)
相关推荐
DemonAvenger20 小时前
Kafka性能调优:从参数配置到硬件选择的全方位指南
性能优化·kafka·消息队列
桦说编程1 天前
实战分析 ConcurrentHashMap.computeIfAbsent 的锁冲突问题
java·后端·性能优化
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle