openGauss每日一练第6天 | 学习心得体会
收藏回复举报
openGauss每日一练第6天 | 学习心得体会
发表于2022-11-29 13:50:01
0 查看

学习目标

学习openGauss体系结构,通过实验,了解用户一次只能连接到一个数据库,没法访问其他数据库的对象。

学习内容

通过本章学习,进一步熟悉opengauss基本的建库、建表操作。了解了一个用户一次只能连接到一个数据库, 不能通过一个数据库跨库查询到其他数据库。

1.创建两个数据库。

2.创建一个用户,并赋权sysadmin权限。

3.连接到数据库1,建表插入数据。

4.连接到数据库2,建表插入数据。

5.连接数据库1,查询数据库1的表数据,查询正常。然后再查询数据库2的表数据,查询报错。

6.再次连接到数据库2,查询数据库2的表数据,查询正常

课后作业

1.创建用户user1,分别在数据库musicdb1、数据库musicdb2创建表t11,t21

musicdb2=> select version();
                                                                       version
------------------------------------------------------------------------------------------------------------------------------------------------------
 (openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)

musicdb2=> show server_version;
 server_version
----------------
 9.2.4
(1 row)
musicdb2=>  \copyright
GaussDB Kernel Database Management System
Copyright (c) Huawei Technologies Co., Ltd. 2018. All rights reserved.

创建用户

openGauss=# CREATE USER user1 IDENTIFIED BY 'test@1234';
CREATE ROLE
openGauss=# alter user user1 with sysadmin;
ALTER ROLE
openGauss=# \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 jack      |                                                                                                                  | {}
 opengauss | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 user1     | Sysadmin                                                                                                         | {}

创建数据库、建表并插入数据

openGauss=# create database musicdb1;
CREATE DATABASE
openGauss=# create database musicdb2;
CREATE DATABASE
openGauss=# \c musicdb1 user1
Password for user user1:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb1" as user "user1".
musicdb1=> create table products1(product_id integer,product_name char(20),category char(30));
CREATE TABLE
musicdb1=> insert into products1 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
INSERT 0 4
musicdb1=> 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)
musicdb1=> \c musicdb2 user1
Password for user user1:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb2" as user "user1".
musicdb2=> create table products1(product_id integer,product_name char(20),category char(30));
CREATE TABLE
musicdb2=> insert into products1 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
INSERT 0 4
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)

2.user1用户连接到数据库musicdb1,并访问数据库musicdb1下的表t11

musicdb2=> \c musicdb1 user1
Password for user user1:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb1" as user "user1".
musicdb1=> \d
                           List of relations
 Schema |   Name    | Type  | Owner |             Storage
--------+-----------+-------+-------+----------------------------------
 public | products1 | table | user1 | {orientation=row,compression=no}
(1 row)

musicdb1=> select * from musicdb1.public.products1;
 product_id |     product_name     |            category
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs
       1601 | lamaze               | toys
       1700 | wait interface       | Books
       1666 | harry potter         | toys
(4 rows)

3.在这个连接中(使用数据库用户user1连接到数据库musicdb1)访问数据库musicdb2下的t21表(会报错)

musicdb1=> select * from musicdb2.public.products1;
ERROR:  cross-database references are not implemented: "musicdb2.public.products1"
LINE 1: select * from musicdb2.public.products1;

4.使用数据库用户user1连接到数据库musicdb2,访问数据库musicdb2下的t21表。

musicdb1=> \c musicdb2 user1
Password for user user1:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb2" as user "user1".
musicdb2=> select * from musicdb2.public.products1;
 product_id |     product_name     |            category
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs
       1601 | lamaze               | toys
       1700 | wait interface       | Books
       1666 | harry potter         | toys
(4 rows)

本帖最后由 匿名用户2023/11/20 15:46:53 编辑

我要发帖子