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

openGauss每日一练第6天-随堂笔记

  1. 学习目标:
    通过实验,了解用户一次只能连接到一个数据库,没法访问其他数据库的对象。

  2. 实践操作学习:
    用户joh1连接到数据库johdb1时,没法访问johdb2上的表。

  • 测试环境准备
su - omm
gsql -r 

--新建表空间和数据库
omm=# create tablespace joh_tbs relative location 'tablespace/joh_ts';
CREATE TABLESPACE
omm=# create database johdb1 with tablespace = joh_tbs;
CREATE DATABASE
omm=# create database johdb2 with tablespace = joh_tbs;
CREATE DATABASE
omm=# create database johdb3 with tablespace = joh_tbs;
CREATE DATABASE

--新建用户joh1
omm=# create user joh1 identified by 'johnny@1234';
CREATE ROLE

--赋权
omm=# alter user joh1 sysadmin;
ALTER ROLE

--建表
\c johdb1 joh1
create table tt1(col1 char(20));
insert into tt1 values('Hello opengauss!1');
select * from tt1;

\c johdb2 joh1
create table tt2(col1 char(20));
insert into tt2 values('Hello opengauss!2');
select * from tt2;

image.png

  • 使用joh1用户连接到johdb1库下,查询tt1表
    (可以使用DatabaseName.SchemaName.TableName来标识openGauss中的一个表,没指定的情况下建表默认表都放在public这个schema下
\c johdb1 joh1
select * from johdb1.public.tt1;

image.png

  • 同一个连接下,试图去访问johdb2下的tt2表会报错
johdb1=> select * from johdb2.public.tt2;
ERROR:  cross-database references are not implemented: "johdb2.public.tt2"
LINE 1: select * from johdb2.public.tt2;
  • 切换连接到johdb2下就可以正常查询库下的表了
\c johdb2 joh1
select * from johdb2.public.tt2;

image.png

  1. 总结:
    实验结果表明,一般情况下,opengauss的每个库都是相对独立且不能够相互连接的,与PG中不库以及oracle中不通pdb一样,需要使用类似dblink的方案相互连接。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论