openGauss开源数据库实战十
文章目录
- 任务十 openGauss逻辑结构:数据库管理
- 任务目标
- 实施步骤
- 一、登录到openGauss
- 二、创建数据库
- 三、查看数据库集群中有哪些数据库
- 四、查看数据库默认表空间的信息
- 五、查看数据库下有哪些模式
- 六、查看数据库下有哪些表
- 七、修改数据库的默认表空间
- 八、重命名数据库
- 九、删除数据库
- 十、修改数据库的默认用户
- 十一、任务的扫尾工作
任务十 openGauss逻辑结构:数据库管理
任务目标
数据库是数据库对象的容器,在数据库中可以创建模式、表、索引等数据库对象。openGauss数据库管理包括创建数据库、删除数据库、重命名数据库、查看数据库的信息。
实施步骤
一、登录到openGauss
使用用户omm打开一个Linux终端窗口,执行如下的命令:
gsql -d postgres -p 26000 -r
二、创建数据库
执行下面的SOL语句,创建表空间ustb_ts和数据库ustbdb:
CREATE TABLESPACE ustb_ts RELATIVE LOCATION 'tablespace/ustb_ts1';
CREATE DATABASE ustbdb WITH TABLESPACE = ustb_ts;
三、查看数据库集群中有哪些数据库
执行下面的gsql命令,查看当前系统上有哪些数据库:
\l
执行下面的SQL语句,查看当前系统上有哪些数据库:
SELECT datname FROM pg_database;
\q
四、查看数据库默认表空间的信息
使用用户omm打开一个Linux终端窗口,执行如下的命令登录openGauss数据库:
gsql -d studentdb -h 192.168.100.91 -U student -p 26000 -W student@ustb2020 -r
可以分两步来查看数据库studentdb默认表空间的信息。首先执行下面的语句,查看数据库
studentdb默认表空间的OID:
select datname,dattablespace from pg_database where datname='studentdb';
注意:读者在做实验的时候,显示的OID可能会不同于这里的值16389。然后使用刚刚获得的表空间的OID,来查看表空间的名字:
select oid,spcname from pg_tablespace where oid=163889;
可以将上面的两条语句合并成一条语句,来查询数据库studentdb的默认表空间的名字:
select spcname
from pg_tablespace
where oid=( select dattablespace
from pg_database
where datname='studentdb' );
五、查看数据库下有哪些模式
执行下面的SQL语句,查看当前数据库下有哪些模式:
SELECT catalog_name, schema_name, schema_owner
FROM information_schema.schemata;
也可以执行下面的gsql命令,查看当前数据库下有哪些模式:
\dn+
六、查看数据库下有哪些表
执行下面的SQL语句,可以查询当前连接的数据库下有哪些表:
with my_tables(table_catalog, table_schema, table_name, table_type) as
( select table_catalog, table_schema, table_name, table_type
from information_schema.tables
where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')
)
select * from my_tables;
为了完成下一个实验,请保持这个窗口不退出。
七、修改数据库的默认表空间
如果数据库被一个用户打开,就无法更改数据库的默认表空间。
下面用实验证明这一点。先保持用户student连接到数据库studentdb(不要关闭刚才执行
SQL语句的Linux终端窗口。)
使用用户omm打开另外一个Linux终端窗口(我们将该窗口命名为working窗口),执行下
面的语句,先创建表空间app_ts:
gsql -d postgres -p 26000 -r
CREATE TABLESPACE app_ts RELATIVE LOCATION 'tablespace/app_ts1';
然后在working窗口下,执行下面的语句,修改数据库studentdb的默认表空间为app_ts:
ALTER DATABASE studentdb SET TABLESPACE app_ts;
输出显示,更改数据库studentdb的默认表空间为app_ts的语句没有执行成功。可见,必须关
闭所有用户对数据库studentdb的连接,才能完成修改数据库studentdb的默认表空间的任务。
执行下面的gsql元命令,关闭对数据库studentdb的所有会话连接(至少得关闭刚才保留的会
话):
\q
在working窗口,重新执行上面的命令:
ALTER DATABASE studentdb SET TABLESPACE app_ts;
再次执行下面的SQL语句,查询数据库studentdb的默认表空间:
select spcname
from pg_tablespace
where oid=( select dattablespace
from pg_database
where datname='studentdb' );
可以看到,目前数据库studentdb的默认表空间是app_ts了。
执行下面的SQL语句,重新把数据库studentdb的默认表空间设置为表空间student ts,并退
出gsql:
ALTER DATABASE studentdb SET TABLESPACE student_ts;
drop tablespace app_ts;
\q
八、重命名数据库
使用Linux用户omm,执行下面的命令和SOL语句,查看当前openGauss上有哪些数据库:
gsql -d postgres -p 26000 -r
\l
执行下面的SOL语句,将数据库ustbdb更名为beikedadb:
ALTER DATABASE ustbdb RENAME TO beikedadb;
执行下面的gsql元命令,查看当前系统上有哪些数据库:
\l
可以看到,已经把数据库ustbdb更名为beikedadb了。
九、删除数据库
执行下面的命令,删除数据库beikedadb:
DROP DATABASE beikedadb;
为了继续下面的测试,重新创建数据库ustbdb:
CREATE DATABASE ustbdb WITH TABLESPACE = ustb_ts;
\q
十、修改数据库的默认用户
使用用户omm打开一个Linux终端窗口,执行下面的命令,登录到openGaussDBMS:
gsql -d postgres -p 26000 -r
执行下面的SQL语句,创建数据库用户temp_user,并授予用户temp_user SYSADMIN权限:
CREATE USER temp_user IDENTIFIED BY 'temp_user@ustb2020';
ALTER USER temp_user SYSADMIN;
执行下面的gsql元命令,查看数据库的属主用户是谁:
\l
从输出可以看出,数据库ustbdb的拥有者是用户omm。
执行下面的SQL语句,将数据库ustbdb的拥有者变更为数据库用户temp_user:
ALTER DATABASE ustbdb OWNER to temp_user;
再次执行下面的gsql元命令,查看数据库的属主情况:
\l
从输出可以看到,数据库ustbdb的属主用户已经变更为用户temp_user了。执行下面的SQL语句,
重新将数据库ustbdb的属主更改为用户omm:
ALTER DATABASE ustbdb OWNER to omm;
\l
十一、任务的扫尾工作
继续后面的任务之前,执行下面的SOL语句,删除用户temp_user、数据库ustbdb、表空间ustb_ts,
并退出gsql:
drop user temp_user;
drop database ustbdb;
drop tablespace ustb_ts;
\q