19.2. 文件位置 #
除了已经提到过的 postgresql.conf 文件之外,PostgreSQL 还使用另外三个手工编辑的配置文件,它们控制客户端认证(其使用在第 20 章中讨论)和 SSL 主机配置。默认情况下,所有四个配置文件都存放在数据库集簇的数据目录中。本节描述的参数允许配置文件放在别的地方(这么做可以简化管理,特别是如果配置文件被独立放置,可以很容易保证它得到恰当的备份)。
data_directory(string) #指定用于数据存储的目录。这个参数只能在服务器启动时设置。
config_file(string) #指定主服务器配置文件(通常叫
postgresql.conf)。这个参数只能在postgres命令行上设置。hba_file(string) #指定基于主机的认证配置文件(通常叫
pg_hba.conf)。这个参数只能在服务器启动的时候设置。ident_file(string) #指定用于用户名称映射的配置文件(通常叫
pg_ident.conf)。这个参数只能在服务器启动的时候设置。另见第 20.2 节。hosts_file(string) #指定基于主机的 SSL 配置文件(通常称为
pg_hosts.conf)。此参数只能在服务器启动时设置。另请参见第 18.9.6 节。external_pid_file(string) #指定服务器应创建的额外进程 ID(PID)文件的名称,供服务器管理程序使用。这个参数只能在服务器启动的时候设置。
在默认安装中不会显式设置以上参数。相反,命令行参数 -D 或者环境变量 PGDATA 指定数据目录,并且上述配置文件都能在数据目录中找到。
如果你想把配置文件放在别的地方而不是数据目录中,那么 postgres -D 命令行选项或者环境变量 PGDATA 必须指向包含配置文件的目录,并且 postgresql.conf 中(或者命令行上)的 data_directory 参数必须设置为数据目录的实际位置。请注意,data_directory 将覆盖 -D 和 PGDATA 指定的数据目录位置,但是不覆盖配置文件的位置。
如果你愿意,可以使用选项 config_file、hba_file、ident_file 和/或 hosts_file 单独指定配置文件名称和位置。config_file 只能在 postgres 命令行上指定,但是其他参数可以在主配置文件中设置。如果所有四个参数外加 data_directory 被显式地设置,则不必指定 -D 或 PGDATA。
在设置任何这些参数时,相对路径将被解释为相对于启动 postgres 时所在目录的路径。