PostgreSQL7.0手册-用户手册-15. 管理数据库 16. 磁盘存储

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 13:41:41
第十五章. 管理数据库
内容 
创建数据库 
变换数据库位置 
访问数据库 
删处数据库 
注意: 本节当前是教程里相关章节的一个微变的拷贝.请提意见.(译得不好也请提意见 - 译者 :) - thomas 1998-01-12
尽管 节点数据库管理员 负责Postgres 安装和总体管理, 节点内还是有一些数据库要由其他人来管理,也即 数据库管理员. 这种权限的赋予发生在创建数据库时. 一个用户可以赋予明确的创建数据库和/或创建新用户的权限.一个同时拥有上面两种权限的用户可以进行绝大多数Postgres 的管理工作, 但缺省时不会拥有与节点数据库管理员同样的操作系统权限. 
  
数据库管理员手册将更详细地讨论这些问题. 
创建数据库
在 Postgres 环境里用 create database 创建数据库.createdb 是一个在 Postgres 外创建数据库的命令行工具. 
在使用这些命令时, Postgres 后端必须在正常地运行,而且使用这些命令的用户要么是Postgres超级用户要么是由超级用户赋予了创建数据库权限的用户. 

要创建名为“mydb” 的数据库,在命令行上键入: 

% createdb mydb
或者在 psql 里键入: 
=> CREATE DATABASE mydb;
实现同样的功能. 
如果你没有创建数据库的权限,你将看到如下信息:
ERROR:  CREATE DATABASE: Permission denied.
Postgres 允许你在同一台节点上创建任意数量的数据库,在创建数据库后你自动成为这些数据库的管理员.数据库名必须是(英文)字母开头,最大长度32个字符.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

更改数据库位置
我们可以在一个非缺省位置创建数据库(数据库的缺省位置是安装路径).因为任何数据库的访问实际上都是通过数据库后端进行的,所以数据库的任何具体的路径必须是后端可以访问的(也就是数据库超级用户有读写权限). 
可选的数据库位置是通过环境变量来创建和引用的,这个环境变量给出指定存储位置的绝对路径。这个声明数据库位置的环境变量必须在后端运行前声明,并且它指向的位置必须为postgres管理员帐户可写。有关预配置数据库位置的问题,请与你的节点数据库管理员商议。任何有效的环境变量名都可以用于引用一个可选路径,尽管我们建议使用带有“PGDATA”前缀的使用环境变量名以避免和其他变量冲突。 

注意:在以前版本的 Postgres,还允许用一个绝对路径来声明一个可选的存储位置。尽管我们推荐使用环境变量的方法(因为这样可以令节点管理员在管理磁盘空间时更灵活)我们还是允许使用绝对路径的方法来声明一个可选的位置。管理员手册描述了如何打开这个特性。
从安全性和完整性角度出发,采用的任何路径或环境变量都有一些附加路径域附在后面.必须运行 initlocation 为更改数据库位置做准备. 
要使用环境变量 PGDATA2 创建数据存储区(本例中设置为 /alt/postgres),确保 /alt/postgres 已经存在并且可以被 Postgres 管理员帐户写。然后在命令行上键入: 

% initlocation PGDATA2
Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base
用下面的命令在命令行上在 PGDATA2 位置上创建存储区: 
% createdb -D PGDATA2 mydb
在 psql 里实现这些的方法是键入: 
=> CREATE DATABASE mydb WITH LOCATION = 'PGDATA2';
如果你没有创建数据库的权限,你将看到如下信息: 
ERROR:  CREATE DATABASE: permission denied
如果声明的路径不存在或数据库后端没有读写该路径的权限,你将会看到如下信息: 
ERROR:  The database path '/no/where' is invalid. This may be due to a character that is not allowed or because the chosen path isn't permitted for databases.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

访问数据库
一旦你创建了一个数据库,你可以通过下面方法访问它: 
  
运行 Postgres 终端监控程序(如: psql ),你可以在其中交互地输入,编辑和执行SQL 命令.
使用 LIBPQ 函数库写一个C程序. 这样,你可以在C里提交一条 SQL 命令,并且在程序里得到结果和返回信息.这些接口将在 PostgreSQL 程序员手册讨论.
你可以运行 psql, 试一下这本手册的例子.我们可以用mydb 数据库来激活之. 
% psql mydb
你将看到如下欢迎信息: 
Welcome to psql, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

mydb=>
这个提示符表明你已经进入终端监控器并可以键入SQL查询到由终端监控器管理的工作区中.psql 响应由“\”开头的转意字符.比如,你可以键入下面命令获得各种PostgresSQL 命令的语法帮助: 
mydb=> \h
一旦你完成向工作区的查询输入,你可以键入下面内容将你的工作区提交给Postgres 服务器: 
mydb=> \g
这句话告诉服务器处理查询.如果你的查询以分号结尾,就不必使用 “\g” 命令. psql 将自动处理由分号结尾的查询.要想从文件里读入查询,比如说 myFile, 而不是在命令行上交互地输入,键入: 
mydb=> \i fileName 

mydb=> \i fileName
从 psql 中退出回到 UNIX, 键入 
mydb=> \q
psql 将退出并回到你的命令行上.(有关更多脱字符的信息,在提示符上键入 \?.)空白(比如,空格,tabs 和新行等) 可以自由地在 SQL 查询里使用.单行注释使用“--”.该行所有在这个符号后面的内容都将被忽略.多行注释或行内注释,使用 “/* ... */”. 
数据库权限
表权限
TBD 
(译注:TBD?To Be Develop?内容呢?我可不是偷懒:)


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

删除数据库
如果你是数据库 mydb 的管理员, 你可以用下面 UNIX 命令删除它: 
% dropdb mydb
这个动作物理上删除所有与该数据库相关的 UNIX 文件,并且不可恢复,所以干这件事之前一定要认真想清楚.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

第十六章. 磁盘存储
本章需要有人写,有一些信息在FAQ里.愿当志愿者吗?(译注:在最新版本中仍然空白,真希望我们也能帮点忙.) - thomas 1998-01-11  
------------------------------------------------------------------------------

Tags:

作者:佚名
分享到: 微信 更多