PostgreSQL7.0手册-用户手册-15. 管理数据库 16. 磁盘存储
2019-09-08 23:33:08
供稿:网友
第十五章. 管理数据库
内容
创建数据库
变换数据库位置
访问数据库
删处数据库
注意: 本节当前是教程里相关章节的一个微变的拷贝.请提意见.(译得不好也请提意见 - 译者 :) - 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
------------------------------------------------------------------------------