greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理

上传人:子 文档编号:43097050 上传时间:2018-06-04 格式:DOC 页数:6 大小:16.58KB
返回 下载 相关 举报
greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理_第1页
第1页 / 共6页
greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理_第2页
第2页 / 共6页
greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理_第3页
第3页 / 共6页
greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理_第4页
第4页 / 共6页
greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理》由会员分享,可在线阅读,更多相关《greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理(6页珍藏版)》请在金锄头文库上搜索。

1、GREENPLUMGREENPLUM 介数据库绍之数据库管理介数据库绍之数据库管理( (四四)-)-创建数据库和用户管理创建数据库和用户管理GREENPLUM 介绍之数据库管理(四)-创建数据库和用户管理上一篇 / 下一篇 2011-04-08 15:09:01 / 个人分类:GREENPLUM 查看( 82 ) / 评论( 1 ) / 评分( 5 / 0 ) GREENPLUM 与 ORACLE 一样有着完全独立于操作系统的用户管理系统,以及权限管理系统。首先我们介绍一下 GP 中的数据库。在 GP 初始化系统后,GP 会自动创建出三个数据库postgre,template0,templat

2、e1. 其中 postgre 用作系统内部数据的存放,我们既不要删除它,也不要修改它。template1 是系统默认的数据,我们创建数据库时可以以 template1 为模板,创建新的数据库。所以,如果有不希望其它数据库继承的对象,就不要在数据库 template1 中进行创建。GP 中创建数据库的语法非常简单,句法如下CREATE DATABASE newname USING TEMPLATE tmplatedbname;速度非常快,这个过程中系统会生成相应的字典信息。如果没有指定 using template 子句,系统就使用 template1 数据库作为模板创建新数据库。我们也可以其它

3、数据库为模板,创建新的数据库。template0 数据库是创建 template1 的模板,一般我们也不使用它创建应用对象。GP 允许在一个 GP SERVER 中创建多个 DATABASE。但是一个 DATABASE 只能属于一个 SERVER。一个连接在同一时间点只能访问一个数据库。GP 中也有 SCHEMA 的概念。SCHEMA 本质就是一个数据库中有关联关系的对象集合,或者也可以理解成对象的命名空间。GP 允许在一个数据库中创建多个 SCHEMA,但是一个 SCHEMA 只能属于一个数据库。在创建数据库时,系统自动创建一个称为 PUBLIC 的SCHEMA。如果自己需要创建 SCHEM

4、A,其句法如下CREATE SCHEMA schema_name;一个 SCHEMA 中,不允许出现同名对象。但是不同的 SCHEMA 是允许对象同名的。所以很多 SQL 访问对象时可以在对象名前加 SCHEMA 作为前缀,说明对象出处。如果不加 SCHEMA 做前缀,访问对象,会话按指定的 SCHEMA 顺序搜索对象,默认的搜索路径只有 public,新建的 schema 不会加到。这也是现在用户在使用工具时常见的一类问题。由于默认 SCHEMA 搜索路径设置不正确,导致应用无法访问到需要的对象。就像下面的过程xjods=# create schema xjods;CREATE SCHEMA

5、xjods=# create table xjods.t1(id numeric);NOTICE: Table doesnt have DISTRIBUTED BY clause - Using column named id as the Greenplum Database data distribution key for this table.HINT: The DISTRIBUTED BY clause determines the distribution of data. Make sure column(s) chosen are the optimal data distri

6、bution key to minimize skew.CREATE TABLExjods=#xjods=# select * from t1;ERROR: relation “t1“ does not existLINE 1: select * from t1;SCHEMA 搜索路径的设置可以在会话中指定,可以在数据库层面指定,可以在用户层面指定,还可以在服务参数中指定。在会话中指定,只对当前连接有效。= set search_path to myschema,public;在数据库中指定,对特定数据库有效= alter database set search_path to myschem

7、a,public在用户层面设定,对的定用户的连接有效,比如ALTER ROLE sally SET search_path TO myschema, public, pg_catalog;想查看当前的 schema,可以用如下命令= SELECT current_schema();或者= SHOW search_path;如果设置存在冲突,优先级是 会话设置 优先于 用户设置 优先于 数据库设置 优先于服务参数设置。一般而且言,我们可以理解数据库对应着应用,SCHEMA 则对应着每个应用的模块。在具体数据库设置时,可以根据需求进行灵活设置。比如要简化备份,减少系统负载的话,就应该尽量减少数据库

8、的创建。因为这样可以减少备份的数量,以及字典的信息。下面再来看 GP 中的用户。数据库的用户从本质上讲就是用于身份审核和权限管理的机制。与 ORACLE 一样 GP 也有完全独立于操作系统的用户管理模块。也就是 GP 的用户和操作系统用户没有多大关系。在创建数据库时,系统会创建一个称为 gpadmin 的超级管理员(建议用来安装 GP 操作系统用户也是 gpadmin),默认该账号从服务器登录时,可以走操作系统认证,不需要用户名密码。它可以完成所有操作。GP 中创建用户的句法如下CREATE ROLE name WITH option . 它的选项,指定了用户的身份认证,系统权限,以及资源限制

9、等等 。具体选项如下SUPERUSER | NOSUPERUSER指定了用户是否是超级管理员,默认是 NOSUPERUSER。 如果是超级管理员则没有访问限制。一般应用用户不要赋予这项权限。CREATEDB | NOCREATEDB指定了用户是否可以创建数据库。默认是 NOCREATEDBCREATEROLE | NOCREATEROLE指定了用户是否可以创建新的用户,默认是 NOCREATEROLECREATEEXTTABLE | NOCREATEEXTTABLE ( attribute=value, . ) 指定用户是否可以创建特定类型,特定协议的外部表。可以指定的属性包括type=rea

10、dable|writableprotocol=gpfdist|http|gphdfs如果使用 file 协议,或者 execute 协议的外部表,必须是超级管理员。默认是 NOCREATEEXTTABLEINHERIT | NOINHERIT在 GP 中,没有独立的角色概念,用户既是角色,也是用户。因此当一个LOGIN | NOLOGIN设定用户是否有登录系统的权限。默认是 NOLOGIN。一般用来管理权限的角色分配 NOLOGIN 权限。CONNECTION LIMIT connlimit限制并发连接的数量,默认值是-1,表示没有限制。在 GP 中有其它更合适的方式限制并发连接的数量,因此建

11、议不要修改该设置。 ENCRYPTED | UNENCRYPTED PASSWORD password设置用户的口令,并指定在字典中存放口令是否要进行加密。VALID UNTIL timestamp指定口令的生命周期。默认是永远不过期。IN ROLE rolename , .向角色中添加新的成员角色,这样新建用户就成了一个组的概念。可以使用 grant 命令实现同样的效果ADMIN rolename , .向角色中添加新角色时,使用 with admin option 选项。允许角色把其它角色的权限再授予其它角色。RESOURCE QUEUE queue_name为用户建立资源队列后,控制用户

12、连接的资源消耗。一个用户只能分配一个资源队列。=# CREATE ROLE admin CREATEROLE CREATEDB;GP 没有独立的用户组或者角色概念。我们可以把一个用户赋予另外一个用户,从而实现角色概念,简化权限的管理。比如=# CREATE ROLE admin CREATEROLE CREATEDB;=# GRANT admin TO john, sally;=# REVOKE admin FROM bob;那么 admin 就是组角色,john,sally 就是成员角色,成员角色从组角色继承系统权限同样,对象的所有者拥有对象的所有权限,如果把对象权限赋予组角色,那么组角色的

13、成员角色也会获取相关对象的访问权限。比如=# GRANT ALL ON TABLE mytable TO admin;=# GRANT ALL ON SCHEMA myschema TO admin;=# GRANT ALL ON DATABASE mydb TO admin;那么,admin 的成员角色也会得到相应的对象访问权限。GP 支持的对象权限包括Object Type PrivilegesTables, Views, Sequences SELECTINSERTUPDATEDELETERULEALLExternal Tables SELECTRULEALLDatabases CONNECTCREATETEMPORARY | TEMPALLFunctions EXECUTEProcedural Languages USAGESchemas CREATEUSAGEALL由于 GP 没有提供 SELECT/UPDATE/DELET ANY TABLE 这样的系统权限,所以需要通过组角色进行模拟,因此会显得比 ORACLE 这样的数据库麻烦。另外,GP 对行列访问控制的粒度只是到 Orange Book C2的安全级别,而不是 B1 级别。也就是访问控制只支持到对象级别,无法支持到行级和列级,但是可以通过视图的方法就行模拟控制。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号