前几篇文章介绍了GreenPlum数据库的安装、启动、关闭、状态检查、登录等操作,数据库已经创建好了,接下来介绍如何使用数据库。按照习惯,需要先创建测试用户、表空间、数据库。先创建测试用户dbdream。

1 postgres=# create role dbdream password 'dbdream' createdb login;
2 NOTICE:  resource queue required -- using default resource queue "pg_default"
3 CREATE ROLE

通常创建用户,赋予login权限基本就够用了,创建用户的语法可以通过\h create role命令来查看,这里不做记录了。可以通过pg_roles字典开查看数据库的用户信息。

1 postgres=# select rolname,oid from pg_roles;
2  rolname |  oid 
3 ---------+-------
4  gpadmin |    10
5  dbdream | 17197
6 (2 rows)

创建完用户后,还需要修改pg_hba.conf文件,来赋予用户的远程登录权限。

1 [gpadmin@mdw gpseg-1]$ vi pg_hba.conf
2 增加以下内容
3 host    all     dbdream         10.9.15.20/32   md5

通过gpstop –u命令重新加载配置文件,使之生效后,dbdream用户即可远程访问数据库了。

1 [gpadmin@mdw gpseg-1]$ psql -d postgres -U dbdream -h 10.9.15.20 -p 5432
2 Password for user dbdream:
3 psql (8.2.15)
4 Type "help" for help.

可以使用\c命令或者\conninfo命令来查看当前的登录信息。

1 postgres=> \c
2 You are now connected to database "postgres" as user "dbdream".

创建表空间需要先创建文件空间,文件空间是在操作系统层创建,创建文件控制需要指定已存在的目录,通常需要规划并创建目录。Master和所有Segment节点都需要创建。可以使用下面的命令查看当前数据库的表空间和文件空间对应关系。

1 postgres=# select a.spcname,b.fsname from pg_tablespace a,pg_filespace b where spcfsoid=b.oid;
2   spcname   |  fsname  
3 ------------+-----------
4  pg_default | pg_system
5  pg_global  | pg_system

当前数据库只有pg_segment一个文件空间,上面有pg_default和pg_global两个表空间 。下面先创建Master节点的目录。

1 [gpadmin@mdw ~]$ mkdir -p /gpdb/gpdata/fspc_master

然后在Master节点通过gpssh命令创建Segment节点的目录。

1 [gpadmin@mdw ~]$ gpssh -f /gpdb/app/config/seg_host -e 'mkdir -p /gpdb/gpdata/fspc_segment'
2 [sdw1] mkdir -p /gpdb/gpdata/fspc_segment
3 [sdw2] mkdir -p /gpdb/gpdata/fspc_segment
4 [sdw3] mkdir -p /gpdb/gpdata/fspc_segment

创建完目录后,可以通过gpfilespace命令创建文件空间。

1 gpadmin@mdw gpdata]$ gpfilespace
2 20160116:11:25:31:004066 gpfilespace:mdw:gpadmin-[INFO]:-
3 A tablespace requires a file system location to store its database
4 files. A filespace is a collection of file system locations for all components
5 in a Greenplum system (primary segment, mirror segment and master instances).
6 Once a filespace is created, it can be used by one or more tablespaces.
7  
8 20160116:11:25:31:004066 gpfilespace:mdw:gpadmin-[INFO]:-getting config
9 Enter a name for this filespace

输入表空间的名字,名字随便起,但是不能使用gp_开头。

01 > fspc1
02  
03 Checking your configuration:
04 Your system has 1 hosts with 0 primary and 0 mirror segments per host.
05 Your system has 3 hosts with 1 primary and 0 mirror segments per host.
06  
07 Configuring hosts: [mdw]
08  
09 Configuring hosts: [sdw1, sdw2, sdw3]
10  
11 Please specify 1 locations for the primary segments, one per line:
12 primary location 1>

这里输入Segment节点的文件空间目录。

1 primary location 1> /gpdb/gpdata/fspc_segment
2  
3 Enter a file system location for the master
4 master location>

这里输入Master几点的文件空间目录。

1 master location> /gpdb/gpdata/fspc_master
2 20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:-Creating configuration file...
3 20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:-[created]
4 20160116:11:27:21:004066 gpfilespace:mdw:gpadmin-[INFO]:-
5 To add this filespace to the database please run the command:
6    gpfilespace --config /gpdb/gpdata/gpfilespace_config_20160116_112531

gpfilespace命令执行完成后,会生成一个配置文件,也就是上面的最后一行,/gpdb/gpdata/gpfilespace_config_20160116_112531,查看这个文件的内容会发现,上面的gpfilespace命令其实只是创建了文件空间的配置信息,并没有真正创建文件空间。

1 [gpadmin@mdw gpdata]$ cat /gpdb/gpdata/gpfilespace_config_20160116_112531
2 filespace:fspc1
3 mdw:1:/gpdb/gpdata/fspc_master/gpseg-1
4 sdw1:2:/gpdb/gpdata/fspc_segment/gpseg0
5 sdw2:3:/gpdb/gpdata/fspc_segment/gpseg1
6 sdw3:4:/gpdb/gpdata/fspc_segment/gpseg2

这个文件可以自己创建并修改,真正创建文件空间需要运行刚才gpfilespace命令后的最后一行。

01 gpadmin@mdw gpdata]$ gpfilespace --config /gpdb/gpdata/gpfilespace_config_20160116_112531
02 20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-
03 A tablespace requires a file system location to store its database
04 files. A filespace is a collection of file system locations for all components
05 in a Greenplum system (primary segment, mirror segment and master instances).
06 Once a filespace is created, it can be used by one or more tablespaces.
07  
08 20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-getting config
09 Reading Configuration file: '/gpdb/gpdata/gpfilespace_config_20160116_112531'
10 20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Performing validation on paths
11 ..............................................................................
12 20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Connecting to database
13 20160116:11:29:19:004180 gpfilespace:mdw:gpadmin-[INFO]:-Filespace "fspc1" successfully created

这样才是真正创建完成文件空间,才能在数据库中查询到新建的文件空间信息。

1 postgres=# select * from pg_filespace;
2   fsname   | fsowner
3 -----------+---------
4  pg_system |      10
5  fspc1     |      10
6 (2 rows)

创建完文件空间,即可在文件空间上创建表空间,创建表空间必须使用support权限用户。

1 postgres-> \c postgres gpadmin
2 You are now connected to database "postgres" as user "gpadmin".
3  
4 postgres=# create tablespace tbs1 filespace fspc1;
5 CREATE TABLESPACE

非support权限用户要使用新建的表空间,必须要使用support用户对其授予操作权限才可以,否则会遇到下面的错误。

1 postgres=# \c dbdream dbdream
2 Password for user dbdream:
3 You are now connected to database "dbdream" as user "dbdream".
4  
5 dbdream=> create table t_test(id int,name varchar(10)) DISTRIBUTED BY(id);
6 ERROR:  permission denied for tablespace tbs1

要使用户默认就使用新建的表空间,需要设置用户的默认表空间。

1 postgres=# alter role dbdream set default_tablespace='tbs1';
2 ALTER ROLE

授权后,即可使用新建的表空间。

01 postgres-> \c postgres gpadmin
02 You are now connected to database "postgres" as user "gpadmin".
03  
04 dbdream=# grant all on tablespace tbs1 to dbdream;
05 GRANT
06  
07 dbdream=> create table t_test(id int,name varchar(10)) DISTRIBUTED BY(id);
08 CREATE TABLE
09 dbdream=> \d t_test
10            Table "public.t_test"
11  Column |         Type          | Modifiers
12 --------+-----------------------+-----------
13  id     | integer               |
14  name   | character varying(10) |
15 Distributed by: (id)
16 Tablespace: "tbs1"

具有createdb权限的用户,都可以创建数据库了,语法可以通过\h create database命令来查看,非常简单。比如下面这条命令就可以创建一个数据库。

1 postgres=> create database dbdream;
2 CREATE DATABASE

也可以在创建数据库时,指定数据库使用的默认表空间。

1 dbdream=# create database tt tablespace tbs1;
2 CREATE DATABASE

创建数据库的用户必须要有createdb权限或者support用户权限,这也是之前创建用户是为什么直接赋予了createdb权限,可以通过pg_database字典来查看数据库信息。

1 dbdream=# select datname,datdba,dattablespace from pg_database;
2   datname  | datdba |  dattablespace |
3 -----------+--------+----------------+
4  dbdream   |  17197 |           1663 |
5  postgres  |     10 |           1663 |
6  tt        |     10 |          17199 |
7  template1 |     10 |           1663 |
8  template0 |     10 |           1663 |
9 (5 rows)

datdba字段表示的是数据库的所有者(创建者),这里存的是用户的oid,10是gpadmin用户,17191是dbdream用户,可以通过pg_role字典来查看。dattablespace字段表示的是表空间。存的也是表空间的ID,1663是pg_default表空间,17199是新建的tbs1表空间,可以通过pg_tablespace字典开查看。

本文固定链接: http://www.dbdream.com.cn/2016/01/greenplum%e6%95%b0%e6%8d%ae%e5%ba%93%e5%88%9b%e5%bb%ba%e7%94%a8%e6%88%b7%e3%80%81%e6%96%87%e4%bb%b6%e7%a9%ba%e9%97%b4%e3%80%81%e8%a1%a8%e7%a9%ba%e9%97%b4%e3%80%81%e6%95%b0%e6%8d%ae%e5%ba%93/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2016年01月1

GreenPlum 数据库创建用户、文件空间、表空间、数据库的更多相关文章

  1. oracle12c创建用户和表空间出现的问题

    Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全 ...

  2. oracle常用SQL——创建用户、表空间、授权(12C)

    一.查询 查询用户所属 表空间 select username,default_tablespace from dba_users where username='xxx' 查询表空间情况 SELEC ...

  3. ORACLE创建用户,表空间,并且导出数据,导出表

    1.创建用户: create user toptea2 identified by "用户名" 2.给用户授权 grant create session to 用户名; grant ...

  4. oracle创建用户、表空间、临时表空间、分配权限步骤详解

    首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...

  5. oracle12c创建用户指定表空间

    --1.创建临时空间 create temporary tablespace zyj_temp tempfile 'D:\app2\user\virtual\oradata\orcl\zyj_temp ...

  6. 用cmd命令创建oracle 数据库、用户和表空间

    Win+R调查运行窗口,输入cmd回车 连接到本地oracle库 创建名为"SXSJ"的表空间,其初始大小为512M,支持自动扩展,每次增量为32M: create tablesp ...

  7. ORACLE数据库创建用户名和表空间

    [sql] /*第1步:登录  */  以sys/sys超级用户登录pl/sql      /*第2步:创建临时表空间  */  create temporary tablespace user_te ...

  8. 用sqlplus为oracle创建用户和表空间<转>

    用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的,本文要介绍的是另一种方法,使用Oracle 9i所带的命令行工具:SQLPLUS来创建表空间 ...

  9. oracle 备份和还原还有创建用户、表空间、授权

    --找到存放dbf文件的路径--E:\oracle\product\10.2.0\oradata\orcl--可以通过此语句进行查询select * from v$datafile; --创建表空间c ...

  10. 用sqlplus为oracle创建用户和表空间

    用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...

随机推荐

  1. matplotlib实例笔记

    下面的图型是在一幅画布上建立的四个球员相关数据的极坐标图 关于这个图的代码如下: #_*_coding:utf-8_*_ import numpy as np import matplotlib.py ...

  2. Java内存模型学习笔记(一)—— 基础

    1.并发编程模型的分类 在并发编程中,我们需要处理两个关键的问题:1.线程间如何通信,2.线程间如何同步.通信是指线程之间以何种机制来交换信息,同步是指程序用于不同线程之间操作发生相对顺序的机制. 在 ...

  3. SVN_05用戶管控

    安全性设置 [1]在左侧的User上点击右键 输入上面的信息,点击OK,我们就创建一个用户了. 说明:注意到了下面图中的Groups,是的,也可以先创建组,把用户添加到各个组中,然后对组进行授权,操作 ...

  4. Oracle触发器编译错误及解决方案

    错误 TRIGGER **** 编译错误 错误:PLS-00103: 出现符号 "END"在需要下列之一时:        ( begin case declare exit    ...

  5. 骨骼蒙皮动画(SkinnedMesh)

    骨骼蒙皮动画也就是SkinnedMesh,应该是目前用的最多的3D模型动画了.因为他可以解决关节动画的裂缝问题,而且原理简单,效果出色,所以今天详细的谈一下骨骼蒙皮动画的相关知识. 关节动画中使用的是 ...

  6. 从零开始搭建一个简单的基于webpack的vue开发环境

    原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ...

  7. springboot笔记04——读取配置文件+使用slf4j日志

    前言 springboot常用的配置文件有yml和properties两种,当然有必要的时候也可以用xml.我个人更加喜欢用yml,所以我在这里使用yml作为例子.yml或properties配置文件 ...

  8. Python爬虫之BeautifulSoap的用法

    1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  9. 【转载】 C#使用Select方法快速获取List集合集合中某个属性的所有值集合

    在C#的List集合操作或者数组操作中,有时候我们需要获取到List集合元素中所有的对象的某个属性,然后存放到一个数组集合中,此时就可以使用到List集合以及数组的扩展方法Select方法快速实现获取 ...

  10. 如果只有1小时学Python,看这篇就够了

    大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析.数据可视化的应用与教学. 和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从 ...