第 7 天学习打卡,本课目标是学习 openGauss 数据库、用户和模式的关系和访问方式,理解模式是在数据库层面,用户是在实例层面。
作业
- 查看当前数据库下有哪些模式
omm=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1'; CREATE TABLESPACE omm=# CREATE DATABASE musicdb WITH TABLESPACE = music_tbs; CREATE DATABASE omm=# CREATE USER user1 IDENTIFIED BY 'kunpeng@1234'; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE omm=# ALTER USER user1 SYSADMIN; ALTER ROLE omm=# \q omm@modb:~$ gsql -d musicdb -U user1 -p 5432 -W kunpeng@1234 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. musicdb=> \dn List of schemas Name | Owner -----------------+------- blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm pkg_service | omm public | omm snapshot | omm sqladvisor | omm (10 rows) musicdb=>
- 然后为数据库 musicdb 创建4个模式,名称自定义
musicdb=> create schema tank1 AUTHORIZATION user1; CREATE SCHEMA musicdb=> create schema tank2 AUTHORIZATION user1; CREATE SCHEMA musicdb=> create schema tank3 AUTHORIZATION user1; CREATE SCHEMA musicdb=> create schema tank4 AUTHORIZATION user1; CREATE SCHEMA musicdb=> \dn List of schemas Name | Owner -----------------+------- blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm pkg_service | omm public | omm snapshot | omm sqladvisor | omm tank1 | user1 tank2 | user1 tank3 | user1 tank4 | user1 (14 rows)
- 在数据库 musicdb 的不同的模式下创建同名的表
musicdb=> create table tank1.ttt(col varchar(100)); CREATE TABLE musicdb=> create table tank2.ttt(col varchar(100)); CREATE TABLE musicdb=> create table tank3.ttt(col varchar(100)); CREATE TABLE musicdb=> create table tank4.ttt(col varchar(100)); CREATE TABLE musicdb=> insert into tank1.ttt values('Hello! from schema schm1 11111'); INSERT 0 1 musicdb=> insert into tank2.ttt values('Hello! from schema schm1 11111'); INSERT 0 1 musicdb=> insert into tank3.ttt values('Hello! from schema schm1 11111'); INSERT 0 1 musicdb=> insert into tank4.ttt values('Hello! from schema schm1 11111'); INSERT 0 1 musicdb=>
- 访问 musicdb 数据库下不同模式的同名表
musicdb=> select * from tank1.ttt; col ---------------------------------- Hello! from schema schm1 11111 (1 row) musicdb=> select * from tank2.ttt; col ---------------------------------- Hello! from schema schm1 11111 (1 row) musicdb=> select * from tank3.ttt; col ---------------------------------- Hello! from schema schm1 11111 (1 row) musicdb=> select * from tank4.ttt; col ---------------------------------- Hello! from schema schm1 11111 (1 row)
- 实验理解:模式是在数据库层面,用户是在实例层面
omm@modb:~$ gsql -d musicdb -U user1 -p 5432 -W kunpeng@1234 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. musicdb=> \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 | {} musicdb=> \dn List of schemas Name | Owner -----------------+------- blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm pkg_service | omm public | omm snapshot | omm sqladvisor | omm tank1 | user1 tank2 | user1 tank3 | user1 tank4 | user1 (14 rows) musicdb=> \q omm@modb:~$ omm@modb:~$ gsql -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. omm=# \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 | {} omm=# \dn List of schemas Name | Owner -----------------+------- blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm pkg_service | omm public | omm snapshot | omm sqladvisor | omm user1 | user1 (11 rows) omm=# \q omm@modb:~$
总结
通过本课,理解了数据库层的模式和实例层用户的区别。通过管理 SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的 SCHEMA 下而不引起冲突。
文档:
SCHEMA:https://docs.opengauss.org/zh/docs/3.1.0/docs/BriefTutorial/SCHEMA.html
用户:https://docs.opengauss.org/zh/docs/3.1.0/docs/Developerguide/%E7%94%A8%E6%88%B7.html
历史打卡记录:
openGauss 每日一练第 1 天|openGauss 数据库状态查看
openGauss 每日一练第 2 天|学习 openGauss 客户端工具 gsql 的使用
openGauss 每日一练第 3 天|openGauss 中一个数据库集簇对应多个数据库
openGauss 每日一练第 4 天|openGauss 中一个数据库可以被多个用户访问
最后修改时间:2022-12-02 22:08:01
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




