暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

openGauss每日一练第6天 - 学习心得体会

原创 尚雷 2022-11-29
574

一、学习目标

时间过的很快,今天进入本次实训的第六天,第六天的实训内容重点依然是对openGauss体系结构的理解,用户登录数据库后,一次只能连接一个数据库,在不创建dblink的情况下,是无法在一个库中去访问其他数据库中的表,这一点也和其它数据库相同。
Oracle数据库可以直接使用dblink,但像MySQL如果需要使用dblink,需要更换相应存储引擎来实现,对于PG类,如使用dblink,需要安装编译相应插件才行。
课后我会抽时间熟悉openGauss对dblink插件的编译和安装,到时也会专门为此写篇文章。
再附上一个openGauss的逻辑结构图:
image.png

二、测试练习

2.1 创建表空间及数据库

[omm@opengauss-node1 ~]$ gsql -d presdb -p 26000
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:24 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

presdb=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'db/music_tbs';
CREATE TABLESPACE
presdb=# CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;
CREATE DATABASE
presdb=# CREATE DATABASE musicdb1  WITH TABLESPACE = music_tbs;
CREATE DATABASE
presdb=# CREATE DATABASE musicdb2  WITH TABLESPACE = music_tbs;
CREATE DATABASE
presdb=# \db
                  List of tablespaces
    Name    |  Owner  |            Location            
------------+---------+--------------------------------
 music_tbs  | omm     | db/music_tbs
 musicdbtbs | omm     | data/musicdbtbs
 pg_default | omm     | 
 pg_global  | omm     | 
 tbs1       | preuser | /opt/gaussdb/install/data/tbs1
 tbs2       | preuser | /opt/gaussdb/install/data/tbs2
(6 rows)

presdb=# \l
                          List of databases
   Name    |  Owner  | Encoding | Collate | Ctype | Access privileges 
-----------+---------+----------+---------+-------+-------------------
 musicdb   | omm     | UTF8     | C       | C     | 
 musicdb1  | omm     | UTF8     | C       | C     | 
 musicdb10 | omm     | UTF8     | C       | C     | 
 musicdb2  | omm     | UTF8     | C       | C     | 
 postgres  | omm     | UTF8     | C       | C     | 
 presdb    | preuser | UTF8     | C       | C     | 
 template0 | omm     | UTF8     | C       | C     | =c/omm           +
           |         |          |         |       | omm=CTc/omm
 template1 | omm     | UTF8     | C       | C     | =c/omm           +
           |         |          |         |       | omm=CTc/omm
(8 rows)

image.png

2.2 创建用户并授权

presdb=# CREATE USER user1 IDENTIFIED BY 'kunpeng@1234';
CREATE ROLE
presdb=# ALTER USER user1 SYSADMIN;
ALTER ROLE

image.png

2.3 切换不同库并建表并插入数据

presdb=# \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 t11(col1 char(20));
CREATE TABLE
musicdb1=> insert into t11 values('Hello openGauss! 11');
INSERT 0 1
musicdb1=> select * from t11;
         col1         
----------------------
 Hello openGauss! 11 
(1 row)

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 t21(col1 char(20));
CREATE TABLE
musicdb2=> insert into t21 values('Hello openGauss! 22');
INSERT 0 1
musicdb2=> select * from t21;
         col1         
----------------------
 Hello openGauss! 22 
(1 row)

image.png

2.4 测试跨库查询数据

musicdb2=> select * from musicdb2.public.t21;
         col1         
----------------------
 Hello openGauss! 22 
(1 row)

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

image.png

三、课程总结

通过上述测试,可以看到,在不指定表所属用户的情况下,openGauss的表会默认创建在public下。
openGauss对于public是这样描述。
PUBLIC可看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。
如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC,这是openGauss特有的属性。
openGauss会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。当然,对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。
另外,如果未创建dblink,是无法使用用户在当前库下去对其它库下的表进行增删改查操作的。

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

评论