Alterando a porta do PostgreSQL usando a linha de comando

10

Minha porta padrão do PostgreSQL é 5432, desejo alterar a porta padrão usando a linha de comando (no Windows 7).

Eu vi essa solução antes: /programming/187438/want-to-change-pgsql-port

Tentei executar o seguinte comando, mas ele falhou:

postgres --p 5431

Alguém poderia me dizer como mudar de porta usando a linha de comando?

Nick Hung
fonte

Respostas:

9

Como você está no Windows e provavelmente está iniciando o PostgreSQL como um serviço do Windows, será necessário editar postgresql.conf(dentro do diretório de dados) para definir a nova porta e reiniciar o serviço postgresql usando o painel de controle Serviços ou (como administrador) ) o net servicecomando

Você pode usar uma ferramenta de edição de texto programática para alterar postgresql.confse precisar automatizar isso. Em uma caixa Linux / unix, você usaria uma ferramenta como sedou awk, mas no Windows, imagino que você esteja usando VBS, powershell ou uma ferramenta complementar como Perl.

Você precisará alterar as configurações de conexão em ferramentas como PgAdmin-IIIusar a nova porta.

Se você estava iniciando o PostgreSQL manualmente, pg_ctlpoderia definir a PGPORTvariável de ambiente ou passar uma opção de configuração na linha de comando. Isso não funcionará quando você o iniciar como um serviço do Windows.

Craig Ringer
fonte
Estou usando o "Swiss File Knife" para fazer a substituição em arquivos de texto no Windows.
A_horse_with_no_name
@a_horse_with_no_name Ferramenta útil quando você não possui fileutils / coreutils / etc; Obrigado pela dica.
Craig Ringer
Portanto, não posso usar a linha de comando para alterar a porta pgsql no Windows?
Nick Hung
@NickHung Sim, você pode, como explicado acima - usar um processador de texto para alterar o arquivo de configuração ou não executar o PostgreSQL como um serviço do Windows e, em vez disso, iniciá-lo pg_ctl.
Craig Ringer
7
  • vá para .. \ PostgreSQL \ 9.0 \ data e abra o arquivo postgresql.conf no editor de texto / bloco de notas
  • procure o parâmetro da porta .eg: port = 5433
  • edite-o no número da sua porta.
  • vá para o tipo services.msc e reinicie o serviço postgresql.

você pode verificar se o parâmetro está definido ou não através da ferramenta de consulta. basta executar a show portconsulta. Ele exibirá seu número de porta atual. Se estiver usando o pgAdmin para conectar-se ao db, altere o número da porta nas configurações de conexão.

shamseer pc
fonte
0

Uma solução que não requer substituição de texto ou técnicas semelhantes é configurar a porta diferente em um arquivo de configuração separado e anexar uma diretiva de inclusão ao postgresql.confarquivo.

por exemplo

echo port = 5431 > \path\to\datadir\custom.conf
echo include custom.conf>> \path\to\datadir\postgresql.conf

(É claro que \path\to\datadir\precisa ser substituído pelo caminho correto)

O primeiro echocomando cria um novo arquivo apenas com a configuração da porta. O segundo anexa uma diretiva de inclusão ao arquivo de configuração existente do postgres. Como as configurações "posteriores" substituem as configurações "anteriores" no arquivo, qualquer configuração de porta feita postgresql.confserá substituída pela que está no arquivo de configuração personalizado.

um cavalo sem nome
fonte