19.2. Locais dos arquivos #

Além do arquivo postgresql.conf já mencionado, o PostgreSQL usa dois outros arquivos de configuração editados manualmente, que controlam a autenticação do cliente (seu uso é discutido em Autenticação de cliente). Por padrão, todos estes três arquivos de configuração são armazenados no diretório de dados do agrupamento de bancos de dados. Os parâmetros descritos nesta seção permitem que os arquivos de configuração sejam colocados em outro lugar. (Isto pode facilitar a administração. Em particular, é geralmente mais fácil garantir que seja feita a cópia de segurança dos arquivos de configuração quando estes são mantidos separados.)

data_directory (string) #

Especifica o diretório a ser usado para armazenamento de dados. Este parâmetro só pode ser definido na ativação do servidor.

config_file (string) #

Especifica o arquivo principal de configuração do servidor (habitualmente chamado postgresql.conf). Este parâmetro só pode ser definido na linha de comando do postgres.

hba_file (string) #

Especifica o arquivo de configuração para autenticação baseada em hospedeiro (habitualmente chamado pg_hba.conf). Este parâmetro só pode ser definido na ativação do servidor.

ident_file (string) #

Especifica o arquivo de configuração para mapeamento de nome de usuário (habitualmente chamado pg_ident.conf). Este parâmetro só pode ser definido na ativação do servidor. Veja também Mapas de nome de usuário.

external_pid_file (string) #

Especifica o nome de um arquivo de ID de processo (PID) adicional, que o servidor deve criar para uso por programas de administração do servidor. Este parâmetro só pode ser definido na ativação do servidor.

Em uma instalação padrão, nenhum dos parâmetros acima é definido explicitamente. Em vez disso, o diretório de dados é especificado pela opção de linha de comando -D, ou pela variável de ambiente PGDATA, e os arquivos de configuração são todos encontrados no diretório de dados.

Se for desejado manter os arquivos de configuração em outro lugar que não seja o diretório de dados, a opção de linha de comando do postgres -D, ou a variável de ambiente PGDATA, deverá apontar para o diretório que contém os arquivos de configuração, e o parâmetro data_directory deverá ser definido no arquivo postgresql.conf (ou na linha de comando) para mostrar onde o diretório de dados está realmente localizado. Note-se que data_directory se sobrepõe a -D e PGDATA para a localização do diretório de dados, mas não para a localização dos arquivos de configuração.

Se for desejado, pode-se especificar os nomes e localizações dos arquivos de configuração individualmente, usando os parâmetros config_file, hba_file e/ou ident_file. O parâmetro config_file só pode ser especificado na linha de comando do postgres, mas os outros parâmetros podem ser definidos no arquivo de configuração principal. Se todos estes três parâmetros, mais data_directory, forem definidos explicitamente, não será necessário especificar a opção -D, nem a variável de ambiente PGDATA.

Ao definir qualquer um desses parâmetros, o caminho relativo será interpretado em relação ao diretório onde o postgres está carregado.

Exemplo 19.1. Exemplo do tradutor

Consultas dos locais dos arquivos

Neste exemplo são mostrados os locais dos arquivos usando o comando SHOW do psql no sistema operacional Debian 12, onde o PostgreSQL 18 foi instalado através de comandos apt-get install.

postgres=# SHOW data_directory;
       data_directory
-----------------------------
 /var/lib/postgresql/18/main
(1 linha)

postgres=# SHOW config_file;
               config_file
-----------------------------------------
 /etc/postgresql/18/main/postgresql.conf
(1 linha)

postgres=# SHOW hba_file;
              hba_file
-------------------------------------
 /etc/postgresql/18/main/pg_hba.conf
(1 linha)

postgres=# SHOW ident_file;
              ident_file
---------------------------------------
 /etc/postgresql/18/main/pg_ident.conf
(1 linha)

postgres=# SHOW external_pid_file;
        external_pid_file
---------------------------------
 /var/run/postgresql/18-main.pid
(1 linha)