Supported Versions: Current (16) / 15 / 14 / 13 / 12
Development Versions: devel
Unsupported versions: 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

17.2. File Locations

In addition to the postgresql.conf file already mentioned, PostgreSQL uses two other manually-edited configuration files, which control client authentication (their use is discussed in Chapter 20). By default, all three configuration files are stored in the database cluster's data directory. The options described in this section allow the configuration files to be placed elsewhere. (Doing so can ease administration. In particular it is often easier to ensure that the configuration files are properly backed-up when they are kept separate.)

data_directory (string)

Specifies the directory to use for data storage. This option can only be set at server start.

config_file (string)

Specifies the main server configuration file (customarily called postgresql.conf). This option can only be set on the postmaster command line.

hba_file (string)

Specifies the configuration file for host-based authentication (customarily called pg_hba.conf). This option can only be set at server start.

ident_file (string)

Specifies the configuration file for ident authentication (customarily called pg_ident.conf). This option can only be set at server start.

external_pid_file (string)

Specifies the name of an additional process-id (PID) file that the postmaster should create for use by server administration programs. This option can only be set at server start.

In a default installation, none of the above options are set explicitly. Instead, the data directory is specified by the -D command-line option or the PGDATA environment variable, and the configuration files are all found within the data directory.

If you wish to keep the configuration files elsewhere than the data directory, the postmaster's -D command-line option or PGDATA environment variable must point to the directory containing the configuration files, and the data_directory option must be set in postgresql.conf (or on the command line) to show where the data directory is actually located. Notice that data_directory overrides -D and PGDATA for the location of the data directory, but not for the location of the configuration files.

If you wish, you can specify the configuration file names and locations individually using the options config_file, hba_file and/or ident_file. config_file can only be specified on the postmaster command line, but the others can be set within the main configuration file. If all three options plus data_directory are explicitly set, then it is not necessary to specify -D or PGDATA.

When setting any of these options, a relative path will be interpreted with respect to the directory in which the postmaster is started.