资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
GREENPLUMGREENPLUM 介数据库绍之数据库管理介数据库绍之数据库管理( (四四)-)-创建数据库和用户管理创建数据库和用户管理GREENPLUM 介绍之数据库管理(四)-创建数据库和用户管理上一篇 / 下一篇 2011-04-08 15:09:01 / 个人分类:GREENPLUM 查看( 82 ) / 评论( 1 ) / 评分( 5 / 0 ) GREENPLUM 与 ORACLE 一样有着完全独立于操作系统的用户管理系统,以及权限管理系统。首先我们介绍一下 GP 中的数据库。在 GP 初始化系统后,GP 会自动创建出三个数据库postgre,template0,template1. 其中 postgre 用作系统内部数据的存放,我们既不要删除它,也不要修改它。template1 是系统默认的数据,我们创建数据库时可以以 template1 为模板,创建新的数据库。所以,如果有不希望其它数据库继承的对象,就不要在数据库 template1 中进行创建。GP 中创建数据库的语法非常简单,句法如下CREATE DATABASE newname USING TEMPLATE tmplatedbname;速度非常快,这个过程中系统会生成相应的字典信息。如果没有指定 using template 子句,系统就使用 template1 数据库作为模板创建新数据库。我们也可以其它数据库为模板,创建新的数据库。template0 数据库是创建 template1 的模板,一般我们也不使用它创建应用对象。GP 允许在一个 GP SERVER 中创建多个 DATABASE。但是一个 DATABASE 只能属于一个 SERVER。一个连接在同一时间点只能访问一个数据库。GP 中也有 SCHEMA 的概念。SCHEMA 本质就是一个数据库中有关联关系的对象集合,或者也可以理解成对象的命名空间。GP 允许在一个数据库中创建多个 SCHEMA,但是一个 SCHEMA 只能属于一个数据库。在创建数据库时,系统自动创建一个称为 PUBLIC 的SCHEMA。如果自己需要创建 SCHEMA,其句法如下CREATE SCHEMA schema_name;一个 SCHEMA 中,不允许出现同名对象。但是不同的 SCHEMA 是允许对象同名的。所以很多 SQL 访问对象时可以在对象名前加 SCHEMA 作为前缀,说明对象出处。如果不加 SCHEMA 做前缀,访问对象,会话按指定的 SCHEMA 顺序搜索对象,默认的搜索路径只有 public,新建的 schema 不会加到。这也是现在用户在使用工具时常见的一类问题。由于默认 SCHEMA 搜索路径设置不正确,导致应用无法访问到需要的对象。就像下面的过程xjods=# create schema xjods;CREATE SCHEMAxjods=# 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 distribution 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 myschema,public在用户层面设定,对的定用户的连接有效,比如ALTER ROLE sally SET search_path TO myschema, public, pg_catalog;想查看当前的 schema,可以用如下命令= SELECT current_schema();或者= SHOW search_path;如果设置存在冲突,优先级是 会话设置 优先于 用户设置 优先于 数据库设置 优先于服务参数设置。一般而且言,我们可以理解数据库对应着应用,SCHEMA 则对应着每个应用的模块。在具体数据库设置时,可以根据需求进行灵活设置。比如要简化备份,减少系统负载的话,就应该尽量减少数据库的创建。因为这样可以减少备份的数量,以及字典的信息。下面再来看 GP 中的用户。数据库的用户从本质上讲就是用于身份审核和权限管理的机制。与 ORACLE 一样 GP 也有完全独立于操作系统的用户管理模块。也就是 GP 的用户和操作系统用户没有多大关系。在创建数据库时,系统会创建一个称为 gpadmin 的超级管理员(建议用来安装 GP 操作系统用户也是 gpadmin),默认该账号从服务器登录时,可以走操作系统认证,不需要用户名密码。它可以完成所有操作。GP 中创建用户的句法如下CREATE ROLE name WITH option . 它的选项,指定了用户的身份认证,系统权限,以及资源限制等等 。具体选项如下SUPERUSER | NOSUPERUSER指定了用户是否是超级管理员,默认是 NOSUPERUSER。 如果是超级管理员则没有访问限制。一般应用用户不要赋予这项权限。CREATEDB | NOCREATEDB指定了用户是否可以创建数据库。默认是 NOCREATEDBCREATEROLE | NOCREATEROLE指定了用户是否可以创建新的用户,默认是 NOCREATEROLECREATEEXTTABLE | NOCREATEEXTTABLE ( attribute=value, . ) 指定用户是否可以创建特定类型,特定协议的外部表。可以指定的属性包括type=readable|writableprotocol=gpfdist|http|gphdfs如果使用 file 协议,或者 execute 协议的外部表,必须是超级管理员。默认是 NOCREATEEXTTABLEINHERIT | NOINHERIT在 GP 中,没有独立的角色概念,用户既是角色,也是用户。因此当一个LOGIN | NOLOGIN设定用户是否有登录系统的权限。默认是 NOLOGIN。一般用来管理权限的角色分配 NOLOGIN 权限。CONNECTION LIMIT connlimit限制并发连接的数量,默认值是-1,表示没有限制。在 GP 中有其它更合适的方式限制并发连接的数量,因此建议不要修改该设置。 ENCRYPTED | UNENCRYPTED PASSWORD password设置用户的口令,并指定在字典中存放口令是否要进行加密。VALID UNTIL timestamp指定口令的生命周期。默认是永远不过期。IN ROLE rolename , .向角色中添加新的成员角色,这样新建用户就成了一个组的概念。可以使用 grant 命令实现同样的效果ADMIN rolename , .向角色中添加新角色时,使用 with admin option 选项。允许角色把其它角色的权限再授予其它角色。RESOURCE QUEUE queue_name为用户建立资源队列后,控制用户连接的资源消耗。一个用户只能分配一个资源队列。=# CREATE ROLE admin CREATEROLE CREATEDB;GP 没有独立的用户组或者角色概念。我们可以把一个用户赋予另外一个用户,从而实现角色概念,简化权限的管理。比如=# CREATE ROLE admin CREATEROLE CREATEDB;=# GRANT admin TO john, sally;=# REVOKE admin FROM bob;那么 admin 就是组角色,john,sally 就是成员角色,成员角色从组角色继承系统权限同样,对象的所有者拥有对象的所有权限,如果把对象权限赋予组角色,那么组角色的成员角色也会获取相关对象的访问权限。比如=# 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 级别。也就是访问控制只支持到对象级别,无法支持到行级和列级,但是可以通过视图的方法就行模拟控制。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号