Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Executando e Instalando o PostgreSQL Nativamente em Windows - FAQ

Última atualização: $Date: 2008/03/20 11:41:47 $

Atual mantenedor: Dave Page (dpage@postgresql.org)

A versão mais recente desse documento pode ser vista em http://pginstaller.projects.postgresql.org/faq/FAQ_windows_br.html.

As FAQ para a compilação nativa do PostgreSQL em Windows estão em http://www.postgresql.org/files/documentation/faqs/FAQ_MINGW.html.

Essas FAQ tratam apenas da versão nativa do PostgreSQL em Windows. Existe também uma versão utilizando Cygwin, que possui suas próprias FAQ.


Plataformas suportadas

1.1) Em quais versões do Windows o PostgreSQL roda?
1.2) Ouvi dizer que o NT4 é suportado. É verdade?
1.3) E os Windows 95/98/ME?

Instalação

2.1) O que preciso para instalar o PostgreSQL em Windows?
2.2) O que preciso para compilar o PostgreSQL a partir do código-fonte?
2.3) Por que a conta que roda o PostgreSQL não pode ser de administrador?
2.4) Posso intalar o PostgreSQL em uma partição FAT?
2.5) Quais as permissões de sistemas de arquivos que o PostgreSQL requer?
2.6) Por que não posso selecionar Unicode como uma codificação?
2.7) Eu instalei em outra linguagem, mas todas as mensagens estão em inglês!

Erros comuns na instalação

3.1) O PostgreSQL e/ou o instalador trava ao iniciar, falha em iniciar ou congela na inicialização.
3.2) O instalador reclama que a conta especificada é um administrador, mas ela não é!
3.3) Recebo o erro "o usuário não recebeu o tipo de logon solicitado nesse computador" ou outro semelhante.
3.4) Estou recebendo erros de permissão quando instalando/executando initdb.
3.5) Estou recebendo uma mensagem de erro que diz que o PostgreSQL não pode ser instalado a partir de uma sessão de Serviços de Terminal.
3.6) Eu mudei o diretório mas o PostgreSQL ainda está instalado no diretório padrão.


Plataformas suportadas

1.1) Em quais versões do Windows o PostgreSQL roda?

O PostgreSQL é suportado em Windows 2000, XP e 2003. Até o presente momento, ele foi testado apenas em sistemas de 32 bits.

1.2) Ouvi dizer que o NT4 é suportado. É verdade?

Embora não oficialmente suportado, o PostgreSQL irá rodar em Windows NT4 com poucos pequenos ajustes, incluindo:

  • O instalador não irá funcionar corretamente, logo você deverá compilar e instalar o código manualmente.
  • O PostgreSQL utiliza um recurso no sistema de arquivos NTFS chamada 'reparse points' para implementar tablespaces. Esse recurso não está disponível no NT4, logo tablespaces não podem ser utilizados.
  • Não há o programa 'runas.exe' incluído no Windows NT4 como padrão, tornando difícil iniciar o programa sob uma conta de administrador.

Cabe ressaltar que muito poucos testes foram feitos com o NT4.

1.3) E os Windows 95/98/ME?

O PostgreSQL requer funcionalidades que não estão disponíveis nessas versões e não vai rodar nelas. Se você precisar executar o PostgreSQL nesse ambiente, pode olhar a versão Cygwin, que possui suporte básico para plataformas 9x.

Instalação

2.1) O que preciso para instalar o PostgreSQL em Windows?

A maneira mais fácil de instalar o PostgreSQL em Windows é com o instalador disponível no site de FTP do PostgreSQL e seus espelhos. Ele vai instalar uma versão pré-compilada do programa, além do pgAdmin (uma ferramenta gráfica de administração e gerenciamento), uma seleção de módulos 'contrib' para proporcionar funcionalidades especializadas adicionais, e opções de linguagens procedurais.

Para usar o instalador, você precisa de um computador rodando Windows 2000, 2003 ou XP com o Windows Installer Service instalado. O instalador irá criar a conta de serviços, se requerido, e inicializar o agrupamento de bancos de dados.

O download do instalador pode ser feito aqui.

2.2) O que preciso para compilar o PostgreSQL a partir do código-fonte?

As FAQ para compilação em Windows em http://www.postgresql.org/files/documentation/faqs/FAQ_MINGW.html contém detalhes completos para a compilação do código-fonte do PostgreSQL nesses sistemas.

2.3) Por que a conta que roda o PostgreSQL não pode ser de administrador?

Quando um hacker consegue entrar em um computador utilizando uma vulnerabilidade de um programa, ele obtém as permissões da conta da usuário sob a qual o serviço é executado. Apesar de não sabermos de tais vulnerabilidades no PostgreSQL, nós forçamos o uso de uma conta de usuário limitado para minimizar o possível dano que um hacker possa provocar no caso dele encontrar e utilizar uma falha do PostgreSQL para invadir o sistema.

Essa tem sido uma prática comum há muito tempo no mundo Unix, e está começando a se tornar procedimento padrão no mundo Windows, à medida que a Microsoft e outros fabricantes trabalham para melhorar a segurança de seus sistemas.

2.4) Posso intalar o PostgreSQL em uma partição FAT?

A prioridade número um do PostgreSQL é a integridade de seus dados. Os sistemas de arquivos FAT e FAT32 simplesmente não oferecem a confiabilidade necessária para tanto. Além disso, a falta de recursos de segurança oferecidos pela FAT tornam impossível prevenir a modificação não autorizada dos arquivos de dados. Finalmente, o PostgreSQL utiliza um recurso chamado 'reparse points' para implementar tablespaces. Esse recurso não está disponível em partições FAT.

O sistema de arquivos NTFS é jornalizado, oferecendo muito melhor confiabilidade e recuperação de desastres. Além disso, possui um sistema de controle de acesso compreensível e oferece a funcionalidade 'reparse points' utilizada pelo PostgreSQL.

Por essa razão, o instalador do PostgreSQL somente inicializará o agrupamento de bancos de dados em uma partição NTFS. O servidor e utilitários podem ser instalados em qualquer tipo de partição.

Reconhece-se, porém, que em alguns sistemas, tais como estações de desenvolvimento, partições FAT podem ser a única opção. Nesses casos, você pode simplesmente instalar o PostgreSQL normalmente, mas sem inicializar o agrupamento de bancos de dados. Quando a instalação terminar, execute manualmente o programa 'initdb.exe' na partição FAT. Segurança e confiabilidade serão comprometidas, no entanto, e qualquer tentativa de criar tablespaces irá falhar.

2.5) Quais as permissões de sistemas de arquivos que o PostgreSQL requer?

A conta do serviço do PostgreSQL precisa de permissão de leitura em todos os diretórios que apontam para o diretório do serviço. Necessita de permissão de escrita apenas no diretório de dados. Especificamente, não deve ser concedido nada que não permissão de leitura nos diretórios contendo arquivos binários.(Todos os diretórios abaixo do escolhido para a instalação são definidos pelo instalador e, a não ser que você mude alguma coisa, não deve haver problemas com isso).

O PostgreSQL também precisa de permissão de leitura nos arquivos de DLL do sistema, tais como kernel32.dll e user32.dll (dentre outros), que é normalmente concedida por padrão, e no binário CMD.EXE, que pode ser bloqueado em algumas situações e necessitar ser aberto.

Se você está executando o PostgreSQL em um sistema multi-usuário, deve remover as permissões dos diretórios do PostgreSQL para todos os usuários não-administradores. Nenhum usuário nunca irá precisar de permissão nos arquivos do PostgreSQL - toda comunicação é feita através da conexão proporcionada pela libpq. Acesso direto a arquivos de dados pode levar a exposição da informação ou instabilidade do sistema!

2.6) Por que não posso selecionar Unicode como codificação?

A codificação Unicode não é suportada corretamente em Windows, e não pode ser utilizada. O instalador irá permitir que você selecione qualquer codificação que seja suportada pelo PostgreSQL e por sua versão do Windows.

O problema com o Unicode foi explicado por Aleksander Kmetec em uma mensagem para a lista pgsql-hackers:

Por que o Postgres confia no sistema operacional para algumas funções relacionadas com strings, o SO precisa suportar a mesma codificação que é utilizada como a codificação do banco de dados. Infelizmente, o Windows não suporta algumas codificações que estão disponíveis do lado do servidor para o PG.

Aqui está um pequeno exemplo caso o parágrafo anterior não faça muito sentido: com um banco de dados UNICODE (na verdade, UTF8) você precisa utilizar uma locale compatível quando executando o initdb; no meu caso isso quer dizer "sl_SI.utf8" (em Linux) ou "Slovenian_Slovenia.65001" (em Windows).

65001 é o número de código de página para utf8; porém esse não é realmente um código de página válido. O documento originalmente em http://www.sharmahd.com/tm/codepages.html, mas infelizmente removido, dizia que:

"65000 (UTF-7) e 65001 (UTF-8) são pseudo códigos de páginas. Não há arquivos NLS correspondentes. Os ID de código de página podem ser utilizados apenas como chamadas WideCharToMultiByte( ) e MultiByteToWideChar( ) da API."

Isso significa que UPPER(), LOWER() e ORDER BY não funcionam corretamente para bancos de dados UNICODE. Atualmente, não é nem possível executar o initdb com uma locale que utilize codificação 65001. Uma pequena modificação no initdb me permitiu definir LC_COLLATE para Slovenian_Slovenia.65001, mas as ordenações estavam ainda muito alteradas, o que faz sentido considerando aquilo que foi explicado.

Depois de alguma checagem, cheguei a essa lista de codificações que são suportadas pelo PG, mas não são mencionadas em nenhum lugar como sendo suportadas pelo Windows:

  • UTF8
  • EUC_CN
  • EUC_TW
  • LATIN6 (ISO 8859-10/ECMA 144)
  • LATIN7 (ISO 8859-13)
  • LATIN8 (ISO 8859-14)
  • LATIN10 (ISO 8859-16/ASRO SR 14111)

2.7) Eu instalei em outra linguagem, mas todas as mensagens estão em inglês!

A opção de linguagem feita durante a instalação é válida apenas para o instalador. Para modificar o idioma das mensagens do produto instalado, certifique-se que você instalou o recurso Suporte para idioma nacional. Então edite seu arquivo postgresql.conf e modifique o valor do parâmetro lc_messages para o idioma que você deseja.

Erros comuns na instalação

3.1) O PostgreSQL e/ou o instalador trava ao iniciar, falha em iniciar ou congela na inicialização.

As razões mais comuns para isso são anti-vírus e firewalls. Se você tem algum programa de firewall instalado em sua máquina, tente desabilitá-lo ou desinstalá-lo. Se você possui anti-vírus instalado, deve desabilitá-lo para os diretórios que serão utilizados pelo PostgreSQL. Se isso ainda não resolve o problema, deve ser necessário desinstalar completamente o anti-vírus/firewall de sua máquina.

Questões específicas foram relatadas com o anti-vírus nod32. Se você o utiliza, adicione "postmaster.exe" à lista de processos excluídos (disponível nas opções avançadas). Isso foi reportado como sendo a solução para o problema.

Problemas específicos também foram relatados com os anti-vírus McAfee e Panda, além do monitorador de rede NetLimiter. Uma vez que existem pessoas que têm o PostgreSQL trabalhando juntamente com esses programas, não há soluções específicas ou mesmo recomendadas para esses casos. Os problemas parecem ser específicos da máquina onde o programa está instalado, podendo até mesmo exigir sua remoção.

Também há um problema se você tem o cygwin instalado, e o diretório cygwin\bin está presente na variável de ambiente PATH. Existem DLLs no diretório cygwin que são relacionadas com linguagens interpretadas (TCL, perl, python) e contém erros que podem fazer com que o instalador, ou mesmo a versão instalada do PostgreSQL, travem ou congelem. Remova o diretório cygwin\bin directory de seu PATH antes de rodar o instalador!

3.2) O instalador reclama que a conta especificada é um administrador, mas ela não é!

Provavelmente a conta especificada é um administrador ou usuário avançado, mesmo que você não saiba disso. A verificação feita pelo instalador checa especificamente os membros dos grupos de Administradores e Usuários Avançados. Verifique em Usuários e Grupos Locais e veja quem é membro do grupo de Administradores. Se houver grupos que sejam membros de Administradores, cheque também seus membros. O PostgreSQL verifica todos os níveis de grupos aninhados.

3.3) Recebo o erro "o usuário não recebeu o tipo de logon solicitado nesse computador" ou outro semelhante.

Assegure-se que a conta do PostgreSQL possui os direitos de "Fazer logon como um serviço" e "Fazer logon local". O último é necessário apenas durante a instalação, e pode ser removido após seu término se a política de segurança assim o requer. (Direitos são concedidos e retirados utilizando as "Configurações Locais de Segurança"."Fazer logon local" é o padrão, e "Fazer logon como um serviço" será normalmente concedido pelo instalador).

Se você ainda tem esse problema, habilite a auditoria (ainda utilizando as "Configurações Locais de Segurança") e diga-nos quais outros direitos são necessários em sua configuração.

Observe que se seu computador é membro de um domínio, as definições das políticas de segurança podem ser controladas no nível do domínio utilizando Políticas de Grupo.

3.4) Estou recebendo erros de permissão quando instalando/executando initdb.

Assegure-se que a conta do serviço PostgreSQL possui permissões nos diretórios que apontam para onde você instalou o programa. O instalador irá definir as permissões no diretório de instalação, mas não nos diretórios acima. Veja a pergunta 2.5 para saber as permissões necessárias.

3.5) Estou recebendo uma mensagem de erro que diz que o PostgreSQL não pode ser instalado a partir de uma sessão de Serviços de Terminal.

Infelizmente, é isso mesmo. O backend do PostgreSQL não irá rodar a partir de uma sessão serviços de terminal, e para executar o initdb o instalador tem que iniciar o backend isoladamente.Logo, a instalação tem que ser feita a partir do console. Observe que, se você está utilizando Windows Server 2003, você pode obter acesso remoto ao console propriamente dito, e não apenas uma sessão administrativa. Para fazer isso, inicie uma "Remote Desktop Connection" executando mstsc /console, e então connects-se normalmente. Isso irá bloquear o console local do servidor e dá-lo controle sobre aquela sessão. Nesse cenário, o PostgreSQL deve instalar normalmente.

3.6) Eu mudei o diretório mas o PostgreSQL ainda está instalado no diretório padrão.

Assegure-se que você mudou o diretório do recurso raiz. O instalador permite que a mudança do diretório de cada recurso individual. Se você mudar o recurso raiz ("PostgreSQL"), todos os sub-recursos (tais como "Servidor de Banco de Dados") irão automaticamente herdar esse valor, mas se você modifica apenas um sub-recurso o restante da instalação permanece no local padrão.


Privacy Policy | Project hosted by our server sponsors. | Designed by tinysofa
Copyright © 1996 – 2009 PostgreSQL Global Development Group