Zmiana portu PostgreSQL przy użyciu wiersza polecenia

10

Mój domyślny port PostgreSQL to 5432, chcę zmienić domyślny port za pomocą wiersza poleceń (w systemie Windows 7).

Widziałem to rozwiązanie wcześniej: /programming/187438/want-to-change-pgsql-port

Próbowałem uruchomić następujące polecenie, ale nie powiodło się:

postgres --p 5431

Czy ktoś mógłby mi powiedzieć, jak zmienić port za pomocą wiersza polecenia?

Nick Hung
źródło

Odpowiedzi:

9

Ponieważ korzystasz z systemu Windows i prawdopodobnie uruchamiasz PostgreSQL jako usługę Windows, musisz edytować postgresql.conf(wewnątrz katalogu danych), aby ustawić tam nowy port, a następnie ponownie uruchomić usługę postgresql za pomocą panelu sterowania usług lub (jako administrator ) net servicepolecenie.

Możesz użyć programowego narzędzia do edycji tekstu, aby zmienić, postgresql.confjeśli chcesz to zautomatyzować. W systemie Linux / unix użyłbyś narzędzia takiego jak sedlub awk, ale w Windowsie wyobrażam sobie, że będziesz używał VBS, PowerShell lub dodatkowego narzędzia takiego jak Perl.

Musisz zmienić ustawienia połączenia w narzędziach takich jak PgAdmin-IIIkorzystanie z nowego portu.

Jeśli uruchamiasz ręcznie PostgreSQL, pg_ctlmożesz ustawić PGPORTzmienną środowiskową lub przekazać opcję konfiguracji w wierszu poleceń. To nie zadziała, gdy uruchomisz go jako usługę Windows.

Craig Ringer
źródło
Używam „szwajcarskiego noża do plików” do zastępowania plików tekstowych w systemie Windows.
a_horse_w_no_name
@ a_horse_with_no_name Przydatne narzędzie, gdy nie masz fileutils / coreutils / etc; dzięki za wskazówkę.
Craig Ringer
Więc nie mogę użyć wiersza polecenia do zmiany portu pgsql w systemie Windows?
Nick Hung
@NickHung Tak, możesz, jak wyjaśniono powyżej - użyć procesora tekstu, aby zmienić plik konfiguracyjny, lub nie uruchamiać PostgreSQL jako usługi Windows i zamiast tego uruchomić pg_ctl.
Craig Ringer
7
  • przejdź do .. \ PostgreSQL \ 9.0 \ data i otwórz plik postgresql.conf w edytorze tekstu / notatniku
  • wyszukaj parametr portu .eg: port = 5433
  • edytuj to na swój numer portu.
  • przejdź do uruchomienia type services.msc i zrestartuj usługę postgresql.

możesz sprawdzić, czy parametr jest ustawiony, czy nie za pomocą narzędzia do wysyłania zapytań. po prostu wykonaj show portzapytanie. wyświetli twój aktualny numer portu. Jeśli używasz pgAdmin do łączenia się z db upewnij się, że zmieniłeś numer portu w ustawieniach połączenia.

shamseer pc
źródło
0

Rozwiązaniem, które nie wymaga zamiany tekstu lub podobnych technik, jest skonfigurowanie innego portu w osobnym pliku konfiguracyjnym, a następnie dołączenie do postgresql.confpliku dyrektywy dołączającej .

na przykład

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

(Oczywiście \path\to\datadir\należy zastąpić właściwą ścieżką)

Pierwsze echopolecenie tworzy nowy plik z samą konfiguracją portu. Drugi dołącza dyrektywę dołączającą do istniejącego pliku konfiguracyjnego postgres. Ponieważ „późniejsze” ustawienia zastępują „wcześniejsze” ustawienia w pliku, każda wykonana konfiguracja portu postgresql.confzostanie zastąpiona tą z niestandardowego pliku konfiguracyjnego.

koń bez imienia
źródło