1.用户管理
--用户创建
--创建用户:
--创建用户并设置密码
gaussdb=> create user user1 identified by 'Gauss_123';
CREATE ROLE
--创建用户并授予权限:sysadmin
gaussdb=> create user user2 with sysadmin password 'Gauss_123';
CREATE ROLE
--创建用户时指定用的寿命
gaussdb=> create user user3 with VALID BEGIN '2023-09-04 23:59:59' VALID UNTIL '2023-09-10 00:00:00' identified by 'Gauss_123' CONNECTION LIMIT 100;
CREATE ROLE
--修改用户具有sysadmin权限。
gaussdb=> alter user user1 with sysadmin;
ALTER ROLE
--重命名用户
gaussdb=> alter user user2 rename to user4;
ALTER ROLE
gaussdb=> drop user user4;
DROP ROLE
--删除有数据的用户;
--无法删除,有四个对象在sjzt数据库里。
gaussdb=> drop user user1 cascade;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: 4 objects in database sjzt
--解决方法。
revoke all on database sjzt from user1;
DROP user user1;
--如果数据库是用户user1创建的.
alter database sjzt owner to sjzt;
DROP user user1;
2.表空间管理
--表空间管理
--创建表空间:
--创建自定义表空间
gaussdb=> create tablespace tbs2 relative location 'tablespace/tbs2' maxsize '10M';
CREATE TABLESPACE
gaussdb=> select * from pg_tablespace_location((select oid from pg_tablespace where spcname='tbs2'));
pg_tablespace_location
------------------------
tablespace/tbs2
(1 row)
gaussdb=> create user jack with password 'Gauss_123';
CREATE ROLE
--只在第一个节点上手工创建目录。
cd /data/cluster/data
mkdir my_tbs
chown -R omm:ommm my_tbs
chmod -R 775 my_tbs
gaussdb=> create tablespace tbs3 owner jack location '/data/cluster/data/my_tbs/tbs3';
CREATE TABLESPACE
gaussdb=> select oid,* from pg_tablespace;
oid | spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative
-------+------------+----------+--------+------------+------------+----------
1663 | pg_default | 10 | | | | f
1664 | pg_global | 10 | | | | f
18203 | tbs2 | 16420 | | | 10240 K | t
18208 | tbs3 | 18204 | | | | f
(4 rows)
--可以看到,虽然只在第一个目录创建了表空间的目录,但是创建成功后,
--集群所有自定义表空间的信息都复制到了所有节点。
--所以创建自定义表空间,只需要在一个节点上创建目录即可,不需要在所有的节点都创建。
[omm@gaussdb01 my_tbs]$ cd tbs3/
[omm@gaussdb01 tbs3]$ ll
total 16
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_cn_5001
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6001_6002_6003
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6004_6005_6006
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6007_6008_6009
[omm@gaussdb02 my_tbs]$ cd tbs3/
[omm@gaussdb02 tbs3]$ ll
total 16
drwx------ 3 omm omm 4096 Sep 4 18:56 PG_9.2_201611171_cn_5002
drwx------ 3 omm omm 4096 Sep 4 18:56 PG_9.2_201611171_dn_6001_6002_6003
drwx------ 3 omm omm 4096 Sep 4 18:56 PG_9.2_201611171_dn_6004_6005_6006
drwx------ 3 omm omm 4096 Sep 4 18:56 PG_9.2_201611171_dn_6007_6008_6009
[omm@gaussdb02 tbs3]$
[omm@gaussdb03 my_tbs]$ cd tbs3/
[omm@gaussdb03 tbs3]$ ll
total 16
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_cn_5003
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6001_6002_6003
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6004_6005_6006
drwx------ 3 omm omm 4096 Sep 4 18:57 PG_9.2_201611171_dn_6007_6008_6009
[omm@gaussdb03 tbs3]$
---查看表空间
gaussdb=> select oid,* from pg_tablespace;
oid | spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative
-------+------------+----------+--------+------------+------------+----------
1663 | pg_default | 10 | | | | f
1664 | pg_global | 10 | | | | f
18203 | tbs2 | 16420 | | | 10240 K | t
18208 | tbs3 | 18204 | | | | f
(4 rows)
gaussdb=> alter tablespace tbs3 rename to tbs4; --重命名
ALTER TABLESPACE
gaussdb=> alter tablespace tbs4 owner to jack; --修改属主
ALTER TABLESPACE
gaussdb=> alter tablespace tbs4 resize maxsize unlimited; --修改大小
ALTER TABLESPACE
gaussdb=> alter tablespace tbs4 reset (random_page_cost); --修改访问页的成本值。
ALTER TABLESPACE
gaussdb=> drop tablespace tbs4; --删除表空间。
DROP TABLESPACE
3.数据库管理
--数据库管理
--创建数据库:
gaussdb=> create database mydb2;
CREATE DATABASE
gaussdb=> create database mydb3 with owner=jack encoding='UTF-8' LC_COLLATE='zh_CN.UTF-8' LC_CTYPE='zh_CN.UTF-8' DBCOMPATIBILITY='ORA' TABLESPACE=tbs2 CONNECTION LIMIT=1000;
CREATE DATABASE
--指定了数据库mydb3的拥有者(owner)、编码(encoding)、字符集(LC_COLLATE)、字符分类(LC_CTYPE)、兼容模式(DBCOMPATIBILITY)、
--默认表空间(TABLESPACE)、并发连接限制(CONNECTION LIMIT)
--修改数据库属性:
gaussdb=> alter database mydb3 rename to mydb4; --修改数据库的名字
ALTER DATABASE
gaussdb=> alter database mydb2 owner to user1; --修改数据库的属主
ALTER DATABASE
gaussdb=> alter database mydb2 set tablespace tbs2; --设置数据库的表空间。
ALTER DATABASE
gaussdb=> drop database mydb4; --删除数据库。
DROP DATABASE
--查看数据库。
gaussdb=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+-----------+---------+-------+-----------------------
mydb2 | user1 | SQL_ASCII | C | C |
postgres | rdsAdmin | SQL_ASCII | C | C | =Tc/rdsAdmin +
| | | | | rdsAdmin=CTc/rdsAdmin+
| | | | | rdsBackup=c/rdsAdmin +
| | | | | rdsRepl=c/rdsAdmin +
| | | | | root=c/rdsAdmin +
| | | | | rdsMetric=c/rdsAdmin
sjzt | sjzt | SQL_ASCII | C | C | =Tc/sjzt +
| | | | | sjzt=CTc/sjzt +
| | | | | sjzt=APm/sjzt
template0 | rdsAdmin | SQL_ASCII | C | C | =c/rdsAdmin +
| | | | | rdsAdmin=CTc/rdsAdmin
template1 | rdsAdmin | SQL_ASCII | C | C | =c/rdsAdmin +
| | | | | rdsAdmin=CTc/rdsAdmin
(5 rows)
--系统表查看数据库。
gaussdb=> select * from pg_database;
datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace | datcompatibility | datacl | datfrozenxid64 | datminmxid | dattimezone
-----------+--------+----------+------------+----------+---------------+--------------+--------------+---------------+--------------+---------------+------------------+-------------------------------------------------------------------------------------------------------------------+----------------+------------+-------------
template1 | 10 | 0 | C | C | t | t | -1 | 12732 | 0 | 1663 | MYSQL | {=c/rdsAdmin,rdsAdmin=CTc/rdsAdmin}| 3 | 1 | PRC
template0 | 10 | 0 | C | C | t | f | -1 | 12732 | 0 | 1663 | MYSQL | {=c/rdsAdmin,rdsAdmin=CTc/rdsAdmin}| 3 | 0 | PRC
postgres | 10 | 0 | C | C | f | t | -1 | 12732 | 0 | 1663 | MYSQL | {=Tc/rdsAdmin,rdsAdmin=CTc/rdsAdmin,rdsBackup=c/rdsAdmin,rdsRepl=c/rdsAdmin,root=c/rdsAdmin,rdsMetric=c/rdsAdmin} | 3 | 0 | PRC
mydb2 | 18191 | 0 | C | C | f | t | -1 | 12732 | 0 | 18203 | MYSQL | | 3 | 0 | PRC
sjzt | 16900 | 0 | C | C | f | t | -1 | 12732 | 0 | 1663 | MYSQL | {=Tc/sjzt,sjzt=CTc/sjzt,sjzt=APm/sjzt}| 3 | 0 | PRC
(5 rows)
gaussdb=>
4.总结
GaussDB中可以设置用户的寿命,这是它的一个特色。表空间可以自定义,并且只需要在一个节点创建目录授权即可。数据库的创建,支持:ORA,MYSQL,TD,PG四种模式。