7.5. 变更位置

我们可以不在缺省位置创建的数据库.请注意所有数据库访问发生在数据 库服务器后端,因此声明的任何位置必须可以被后端访问.

可选数据库位置是通过环境变量引用的,环境变量里给出你想用的 存储位置的绝对路径.这个环境变量必须出现在服务器的环境里, 因此必须在后端启动之前定义.(这样,可选位置就可以在节点管理员的 控制之下;而普通用户则无法修改它.) 任何有效 的环境变量名都可以用于引用一个可选路径,尽管我们建议使 用带有PGDATA前缀的环境变量名以避免和其他变量混淆或冲突。

要在服务器进程的环境里定义环境变量,你必须先停止服务器,然后定义变量, 初始化数据区,最后重新启动服务器. (参阅Section 3.6Section 3.3.) 要设置环境变量,在 Bourne shell 系列里面键入

PGDATA2=/home/postgres/data
export PGDATA2

或者是在cshtcsh里面键入

setenv PGDATA2 /home/postgres/data

你必须确保这些环境变量总是在服务器环境中存在,否则你就不能 访问数据库.因此你可能会希望把它们设置在 shell 启动脚本文件 或者服务器启动脚本里.

要使用环境变量PGDATA2创建数据存储区,确信 内容目录,(在这里是/home/postgres) 已经存 在并且可以被启动服务器的用户帐户写 (参阅 Section 3.1)。然后在命令行上键入:

initlocation PGDATA2

不是initlocation $PGDATA2)。然后重新启动服务器。

要在新的位置创建一个数据库,使用下面命令

CREATE DATABASE name WITH LOCATION = 'location'

这里 location 是你用的环境变量, 本例中是 PGDATA2createdb 命令有个选项 -D 做此用途.

在变更的位置创建的数据库可以象其他数据库一样访问和删除.

注意: 也可以直接给 CREATE DATABASE 命令声明一个绝对路径 而不需要定义环境变量.缺省时这是不允许的,因为有安全风险. 要允许这么做,你必须带着 C 预编译宏ALLOW_ABSOLUTE_DBPATHS 编译PostgreSQL.你可以这么干:

gmake CPPFLAGS=-DALLOW_ABSOLUTE_DBPATHS all