Cambiare la porta PostgreSQL usando la riga di comando


10

La mia porta predefinita PostgreSQL è 5432, voglio cambiare la porta predefinita usando la riga di comando (in Windows 7).

Ho visto prima questa soluzione: /programming/187438/want-to-change-pgsql-port

Ho provato a eseguire il comando seguente, ma non è riuscito:

postgres --p 5431

Qualcuno potrebbe dirmi come cambiare porta usando la riga di comando?

Risposte:


9

Dato che sei su Windows e stai probabilmente avviando PostgreSQL come servizio Windows, dovrai modificare postgresql.conf(all'interno della tua directory dei dati) per impostare lì la nuova porta, quindi riavviare il servizio postgresql usando il pannello di controllo Servizi o (come amministratore ) il net servicecomando.

È possibile utilizzare uno strumento di modifica del testo programmatico per modificare postgresql.confse è necessario automatizzare questo. Su una casella Linux / unix useresti uno strumento come sedo awk, ma su Windows immagino che utilizzerai VBS, powershell o uno strumento aggiuntivo come Perl.

Dovrai modificare le impostazioni di connessione in strumenti come PgAdmin-IIIusare la nuova porta.

Se avessi avviato PostgreSQL manualmente, pg_ctlpotresti impostare la PGPORTvariabile di ambiente o passare un'opzione di configurazione sulla riga di comando. Questo non funzionerà quando lo avvii come servizio Windows.


Sto usando "Swiss File Knife" per sostituire i file di testo su Windows.
a_horse_with_no_name

@a_horse_with_no_name Strumento utile quando non hai fileutils / coreutils / etc; grazie per il consiglio.
Craig Ringer,

Quindi non posso usare la riga di comando per cambiare la porta pgsql in Windows?
Nick Hung

@NickHung Sì, come spiegato sopra, è possibile utilizzare un elaboratore di testi per modificare il file di configurazione, oppure non eseguire PostgreSQL come servizio Windows e avviarlo pg_ctl.
Craig Ringer

7
  • vai su .. \ PostgreSQL \ 9.0 \ data e apri il file postgresql.conf nell'editor di testo / blocco note
  • cercare il parametro della porta .eg: port = 5433
  • modificalo nel tuo numero di porta.
  • vai a eseguire type services.msc e riavvia il servizio postgresql.

è possibile verificare se il parametro è impostato o meno tramite lo strumento di query. basta eseguire la show portquery. mostrerà il tuo numero di porta corrente. Se si utilizza pgAdmin per connettersi a db, assicurarsi di aver modificato il numero di porta nelle impostazioni di connessione.


0

Una soluzione che non richiede alcuna sostituzione di testo o tecniche simili è quella di configurare le diverse porte in un file di configurazione separato, quindi aggiungere una direttiva include al postgresql.conffile.

per esempio

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

(Ovviamente \path\to\datadir\deve essere sostituito con il percorso corretto)

Il primo echocomando crea un nuovo file con solo la configurazione della porta. Il secondo aggiunge una direttiva include al file di configurazione postgres esistente. Poiché le impostazioni "successive" sovrascrivono le impostazioni "precedenti" nel file, qualsiasi configurazione della porta eseguita postgresql.confverrà sovrascritta con quella nel file di configurazione personalizzato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.