Ändern des PostgreSQL-Ports über die Befehlszeile

10

Mein PostgreSQL-Standardport ist 5432, ich möchte den Standardport mithilfe der Befehlszeile ändern (in Windows 7).

Ich habe diese Lösung schon einmal gesehen: /programming/187438/want-to-change-pgsql-port

Ich habe versucht, den folgenden Befehl auszuführen, aber er ist fehlgeschlagen:

postgres --p 5431

Könnte mir jemand sagen, wie man den Port über die Befehlszeile ändert?

Nick Hung
quelle

Antworten:

9

Da Sie unter Windows arbeiten und PostgreSQL wahrscheinlich als Windows-Dienst starten, müssen Sie postgresql.conf(in Ihrem Datenverzeichnis) bearbeiten , um den neuen Port dort festzulegen, und dann den postgresql-Dienst über die Systemsteuerung Dienste oder (als Administrator) neu starten ) den net serviceBefehl.

Sie können ein programmgesteuertes Textbearbeitungswerkzeug verwenden, um Änderungen vorzunehmen, postgresql.confwenn Sie dies automatisieren müssen. Auf einer Linux / Unix-Box würden Sie ein Tool wie sedoder verwenden awk, aber unter Windows verwenden Sie vermutlich VBS, Powershell oder ein Add-On-Tool wie Perl.

Sie müssen die Verbindungseinstellungen in Tools ändern PgAdmin-III, um den neuen Port zu verwenden.

Wenn Sie PostgreSQL manuell mit starten, können pg_ctlSie die PGPORTUmgebungsvariable festlegen oder eine Konfigurationsoption in der Befehlszeile übergeben. Dies funktioniert nicht, wenn Sie es als Windows-Dienst starten.

Craig Ringer
quelle
Ich verwende "Swiss File Knife", um Textdateien unter Windows zu ersetzen.
a_horse_with_no_name
@a_horse_with_no_name Nützliches Tool, wenn Sie keine fileutils / coreutils / etc haben; Danke für den Tipp.
Craig Ringer
Ich kann also die Befehlszeile nicht verwenden, um den pgsql-Port in Windows zu ändern.
Nick Hung
@NickHung Ja, Sie können, wie oben erläutert, einen Textprozessor verwenden, um die Konfigurationsdatei zu ändern, oder PostgreSQL nicht als Windows-Dienst ausführen und stattdessen mit starten pg_ctl.
Craig Ringer
7
  • Gehen Sie zu .. \ PostgreSQL \ 9.0 \ data und öffnen Sie die Datei postgresql.conf im Texteditor / Editor
  • Suche nach Portparameter .eg: port = 5433
  • Bearbeiten Sie dies zu Ihrer Portnummer.
  • Gehen Sie, um type services.msc auszuführen, und starten Sie den postgresql-Dienst neu.

Über das Abfragetool können Sie überprüfen, ob der Parameter eingestellt ist oder nicht. Führen Sie einfach die show portAbfrage aus. Es wird Ihre aktuelle Portnummer angezeigt. Wenn Sie pgAdmin verwenden, um eine Verbindung zu db herzustellen, stellen Sie sicher, dass Sie Ihre Portnummer in den Verbindungseinstellungen geändert haben.

Shamseer PC
quelle
0

Eine Lösung, die keinen Textersatz oder ähnliche Techniken erfordert, besteht darin, die verschiedenen Ports in einer separaten Konfigurationsdatei zu konfigurieren und dann eine Include-Direktive an die postgresql.confDatei anzuhängen .

z.B

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

(Muss natürlich \path\to\datadir\durch den richtigen Pfad ersetzt werden)

Der erste echoBefehl erstellt eine neue Datei mit nur der Portkonfiguration. Die zweite fügt eine Include-Direktive an die vorhandene Postgres-Konfigurationsdatei an. Da die "späteren" Einstellungen "frühere" Einstellungen in der Datei postgresql.confüberschreiben , wird jede vorgenommene Portkonfiguration mit der in der benutzerdefinierten Konfigurationsdatei überschrieben.

ein Pferd ohne Name
quelle