Documentação do PostgreSQL 8.0.0 | ||||
---|---|---|---|---|
Anterior | Início | Capítulo 16. Ambiente do servidor em tempo de execução | Fim | Próxima |
Antes de ser possível fazer qualquer coisa, deve ser inicializada a área em disco para armazenamento dos bancos de dados. Isto é chamado de criação do agrupamento de bancos de dados (database cluster); em vez desse nome, o padrão SQL utiliza o termo agrupamento de catálogos (catalog cluster). Um agrupamento de bancos de dados é uma coleção de bancos de dados gerenciada por uma única instância de um servidor de banco de dados em execução. Após ser criado, o agrupamento de bancos de dados contém um banco de dados chamado template1. Como o nome sugere (em inglês), este banco de dados é utilizado como modelo para os próximos bancos de dados a serem criados; não deve ser utilizado para trabalho (Para obter informações sobre a como criar bancos de dados no agrupamento deve ser visto o Capítulo 18).
Em termos de sistema de arquivos, um agrupamento de bancos de dados é um único diretório sob o qual todos os dados são armazenados. Este diretório é chamado de diretório de dados ou área de dados. A escolha do local onde os dados são armazenados depende inteiramente de quem faz a instalação. Não existe nenhum padrão, embora sejam usuais locais como /usr/local/pgsql/data e /var/lib/pgsql/data. Para inicializar um agrupamento de bancos de dados é utilizado o utilitário initdb, que é instalado junto com o PostgreSQL. O local no sistema de arquivos escolhido para o agrupamento de bancos de dados é indicado pela opção -D como, por exemplo:
$ initdb -D /usr/local/pgsql/data
Deve ser observado que este comando deve ser executado enquanto conectado na conta de usuário do PostgreSQL, conforme descrito na seção anterior.
O utilitário initdb tenta criar o diretório especificado, caso não exista. É provável que não tenha permissão para criar o diretório (se for seguido o conselho de criar um usuário sem privilégios). Neste caso, o diretório deve ser criado utilizando a conta de usuário root, e mudado o dono do diretório para o usuário do PostgreSQL. Abaixo está mostrado como deve ser feito:
root# mkdir /usr/local/pgsql/data root# chown postgres /usr/local/pgsql/data root# su postgres postgres$ initdb -D /usr/local/pgsql/data
O utilitário initdb se recusa a executar quando o diretório de dados parece que já foi inicializado.
Como o diretório de dados contém todos os dados armazenados no banco de dados, é essencial que esteja seguro contra acessos não autorizados. Portanto, o utilitário initdb revoga as permissões de acesso de todos, menos do usuário do PostgreSQL.
Entretanto, embora o conteúdo do diretório esteja seguro, a configuração de autenticação de cliente padrão permite qualquer usuário local se conectar ao banco de dados, e até mesmo se tornar o superusuário do banco de dados. Caso não se confie nos outros usuários locais, recomenda-se utilizar a opção -W, --pwprompt ou --pwfile do initdb, para atribuir uma senha para o superusuário do banco de dados. Também pode ser especificado -A md5 ou -A password para que não seja utilizado o modo de autenticação padrão trust; também pode ser modificado o arquivo pg_hba.conf gerado após a execução do utilitário initdb, antes de iniciar o servidor pela primeira vez (Outras abordagens razoáveis incluem a utilização da autenticação ident e permissões do sistema de arquivos para restringir as conexões. Para obter informações adicionais deve ser consultado o Capítulo 19).
O utilitário initdb também inicializa o idioma padrão para o agrupamento de bancos de dados. Normalmente, simplesmente pega as definições de idioma do ambiente e aplica ao banco de dados inicializado. É possível especificar um idioma diferente para o banco de dados; informações adicionais sobre este assunto podem ser encontradas na Seção 20.1. A ordem de classificação utilizada por um determinado agrupamento de bancos de dados é definida pelo utilitário initdb, e não pode ser mudada posteriormente, a não ser fazendo cópia de segurança de todos os dados, executando novamente o initdb e recarregando os dados. Também existe impacto no desempenho quando se utiliza um idioma diferente de C ou POSIX. Portanto, é importante fazer a escolha correta da primeira vez.
O utilitário initdb também define a codificação de caracteres padrão para o agrupamento de bancos de dados. Normalmente deve ser escolhida uma codificação que corresponda à definição do idioma. Para obter detalhes deve ser consultada a Seção 20.2.