↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.4 / 7.3
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

18.5. 备选位置 #

可以在安装的默认位置之外的地方创建数据库。但请记住,所有数据库访问都是通过数据库服务器进行的,因此所指定的任何位置都必须是服务器可以访问的。

备选数据库位置通过一个环境变量来引用,该变量给出预期存储位置的绝对路径。这个环境变量必须存在于服务器的环境中,因此它必须在服务器启动之前已被定义。(因此,可用备选位置的集合由站点管理员控制;普通用户不能更改它。)任何有效的环境变量名都可以用来引用备选位置,不过建议使用以 PGDATA 为前缀的变量名,以避免与其他变量混淆和冲突。

要在服务器进程的环境中创建变量,你必须先关闭服务器、定义变量、初始化数据区域,最后重新启动服务器。(另见 第 16.6 节 和 第 16.3 节。)要设置环境变量,在 Bourne shell 中输入

PGDATA2=/home/postgres/data
export PGDATA2

或者在 csh 或 tcsh 中输入

setenv PGDATA2 /home/postgres/data

你必须确保这个环境变量始终在服务器环境中有定义,否则你将无法访问那个数据库。因此你大概会想在某个 shell 启动文件或服务器启动脚本中设置它。

要在 PGDATA2 中创建一个数据存储区域,请确保包含它的目录(这里是 /home/postgres)已经存在,并且运行服务器的用户账号可以写入它(见 第 16.1 节)。然后在命令行输入

initlocation PGDATA2

(而不是 initlocation $PGDATA2)。然后就可以重新启动服务器了。

要在新位置中创建数据库,使用命令

CREATE DATABASE name WITH LOCATION 'location';

其中 location 是你使用的环境变量,本例中即 PGDATA2。createdb 命令有 -D 选项用于此目的。

在备选位置创建的数据库可以像任何其他数据库一样被访问和删除。

注意

也可以直接向 CREATE DATABASE 命令指定绝对路径而不定义环境变量。默认情况下这是不允许的,因为它有安全风险。要允许这样做,你必须在编译 PostgreSQL 时定义 C 预处理器宏 ALLOW_ABSOLUTE_DBPATHS。一种做法是这样运行编译步骤:

gmake CPPFLAGS=-DALLOW_ABSOLUTE_DBPATHS all

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。