initdb
Nome
initdb -- cria um agrupamento de bancos de dados do
PostgreSQL
Sinopse
initdb [opção...] --pgdata | -D diretório
Descrição
O utilitário initdb cria um agrupamento de bancos de dados do PostgreSQL. Um agrupamento de bancos de dados é uma coleção de bancos de dados gerenciados por uma única instância do servidor.
Criar um agrupamento de banco de dados consiste em criar os diretórios onde os bancos de dados vão residir, gerar as tabelas do catálogo compartilhadas (tabelas que pertencem ao agrupamento como um todo, e não a um determinado banco de dados), e criar o banco de dados template1. Quando, mais tarde, for criado um banco de dado, tudo que existe no banco de dados template1 será copiado. Este banco de dados contém tabelas do catálogo contendo coisas como os tipos de dado nativos.
O initdb inicializa a localização e a codificação do conjunto de caracteres padrão do agrupamento de banco de dados. Algumas categorias de localização são estabelecidas para toda a existência do agrupamento e, portanto, é importante fazer a escolha correta ao executar o initdb. Outras categorias de localização podem ser mudadas posteriormente ao inicializar o servidor. O initdb escreve estas definições de localização no arquivo de configuração postgresql.conf tornando-as padrão, mas podem ser mudadas editando este arquivo. Para definir a localização usada pelo initdb, veja a descrição da opção --locale. A codificação do conjunto de caracteres de cada banco de dados pode ser definida individualmente, no momento da criação do banco de dados. O initdb determina a codificação do banco de dados template1, que serve de padrão para todos os outros bancos de dados. Para alterar a codificação padrão deve ser usada a opção --encoding.
O initdb deve ser executado pelo mesmo usuário que vai executar processo servidor, porque o servidor necessita ter acesso aos arquivos e diretórios criados pelo initdb. Como o servidor não deve ser executado pelo root, o initdb também não deve ser executado pelo root (Na verdade, não permite fazê-lo).
Embora o initdb tente criar o diretório de dados especificado, provavelmente não terá permissão para fazê-lo, porque geralmente o diretório de dados está sob um diretório que pertence ao root. Para resolver uma situação como esta deve-se: criar um diretório de dados vazio como root; usar o comando chown para tornar o usuário do banco de dados o dono deste diretório; executar su para se tornar o usuário do banco de dados; finalmente, executar o initdb como o usuário do banco de dados.
Opções
- -D diretório
--pgdata=diretório
-
Esta opção especifica o diretório onde o agrupamento de banco de dados será armazenado. Esta é a única informação requerida pelo initdb, mas pode-se evitar escrevê-la definindo a variável de ambiente PGDATA, o que é conveniente porque, depois, o servidor de banco de dados (postmaster) poderá encontrar o diretório do bancos de dados usando esta mesma variável.
- -E codificação
--encoding=codificação
-
Seleciona a codificação do banco de dados modelo. Também será a codificação padrão para todos os bancos de dados criados posteriormente, a não ser quando for especificada uma outra. O padrão é SQL_ASCII.
- --locale=localização
-
Define a localização padrão para o agrupamento de banco de dados. Se esta opção não for especificada, a localização é herdada do ambiente onde o initdb está executando.
- --lc-collate=localização
--lc-ctype=localização
--lc-messages=localização
--lc-monetary=localização
--lc-numeric=localização
--lc-time=localização
-
Como --locale, mas somente define a localização para a categoria especificada.
- -U nome_do_usuário
--username=nome_do_usuário
-
Especifica o nome de usuário do superusuário do banco de dados. Por padrão o nome do usuário executando o initdb. Não importa realmente qual seja o nome do superusuário, mas é preferível manter o nome habitual postgres, mesmo que o nome do usuário do sistema operacional seja diferente.
- -W
--pwprompt
-
Faz o initdb solicitar a senha a ser atribuída ao superusuário do banco de dados. Se não se pretende utilizar autenticação por senha, isto não tem importância. Senão, não será possível utilizar autenticação por senha enquanto não for atribuída uma senha.
Também estão disponíveis outros parâmetros, menos utilizados:
- -d
--debug
-
Mostra a saída de depuração do servidor de bootstrap, e algumas outras mensagens de menor interesse para o público em geral. O servidor de bootstrap é o programa que o initdb utiliza para criar as tabelas do catálogo. Esta opção gera uma quantidade imensa de saída extremamente entediante.
- -L diretório
-
Especifica onde o initdb deve encontrar os seus arquivos de entrada para inicializar o agrupamento de banco de dados. Será dito se é necessário especificar a localização explicitamente.
- -n
--noclean
-
Por padrão, quando o initdb determina que um erro impediu a criação completa do agrupamento de bancos de dados, são removidos todos os arquivos criados antes de ser descoberto que não era possível terminar o trabalho. Esta opção impede a remoção e, portanto, é útil para a depuração.
Ambiente
- PGDATA
-
Especifica o diretório onde o agrupamento de bancos de dados deve ser armazenado; pode ser mudado usando a opção -D.