HOWTO · PostgreSQL
Starten Sie den PostgreSQL-Server unter Windows
In diesem Artikel erfahren Sie, wie Sie einen PostgreSQL-Server unter Windows starten.
Auf dieser Seite
Heute lernen wir, wie man einen PostgreSQL-Server unter Windows startet. Im vorherigen Artikel zum Herunterladen und Installieren von PostgreSQL unter Windows haben wir bereits gelernt, wie man eine Sitzung startet, einen USER erstellt, Abfragen ausführt und mit verschiedenen Datenbankobjekten arbeitet.
Unser Thema konzentriert sich nun darauf, einen PostgreSQL-Server so auszuführen, dass sich andere Benutzer in einem lokalen System damit verbinden können.
Grundlegende PG_CTL-Initialisierungsbefehle unter Windows
pg_ctl ist das Befehlszeilenprogramm, mit dem ein PostgreSQL-Server initialisiert, gestartet, gestoppt und neu gestartet wird. Es gibt Ihnen die direkte Kontrolle über eine Serverinstanz: Sie verweisen es auf einen Datenordner, und es startet oder stoppt den Server, der diesen Ordner verwendet.
Um einen Server unter Windows zu starten, öffnen Sie eine Eingabeaufforderung und führen Sie pg_ctl aus dem Ordner bin Ihrer PostgreSQL-Installation aus (oder von einer beliebigen Stelle, wenn dieser Ordner in Ihrem PATH ist), wobei -D auf den Datenordner zeigt:
pg_ctl start -D "C:\Program Files\PostgreSQL\14\data"
Dadurch wird Ihr PostgreSQL-Server auf dem Standardport 5432 gestartet. Um ihn stattdessen auf einem anderen Port Ihres Computers auszuführen, auf dem andere Benutzer lauschen sollen, übergeben Sie den Port über die Option -o an den Server:
pg_ctl -o "-p 5656" start -D "C:\Program Files\PostgreSQL\14\data"
Ersetzen Sie 5656 durch die gewünschte Portnummer, ohne Klammern. Dadurch kann Ihr Server gestartet werden und andere Benutzer können sich von verschiedenen Systemen aus damit verbinden. Wenn Ihr PostgreSQL-Server jedoch aus irgendeinem Grund gestoppt wurde, verwenden Sie besser den Befehl restart, der den Server stoppt, falls er läuft, und ihn dann wieder startet:
pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"
In vielen Fällen wird all dies gar nicht nötig sein. Das Standard-Installationsprogramm von PostgreSQL für Windows registriert den Server als Windows-Dienst, der beim Hochfahren des PCs automatisch startet, sodass in der Regel bereits ein Server läuft. pgAdmin und psql sind Clients - sie verbinden sich mit einem laufenden Server; sie starten keinen.
Pfade beim Ausgeben von PG_CTL START/RESTART unter Windows angeben
Manchmal reicht ein einfaches pg_ctl start/restart nicht aus. Möglicherweise müssen Sie den Pfad des DATA-Ordners innerhalb Ihrer PostgreSQL-Installation mit -D angeben und dann die Startbefehle ausgeben, wie in den obigen Beispielen.
Wenn auf demselben Datenordner bereits ein Server läuft, erzeugt ein zweiter Startversuch eine Ausgabe wie diese:
Ausgabe:
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....2022-04-28 19:28:38.766 PKT [3228] LOG: redirecting log output to logging collector process
2022-04-28 19:28:38.766 PKT [3228] HINT: Future log output will appear in directory "log".
stopped waiting
pg_ctl: could not start server
Examine the log output.
Die obige Ausgabe erscheint, wenn bereits ein PostgreSQL-Server läuft. Da der beim Hochfahren gestartete Dienst bereits im Hintergrund aktiv war, konnte der obige Befehl keinen zweiten Server auf demselben Datenordner initialisieren. Mit dem Folgenden würde dagegen ein separater Server auf demselben PC laufen: Er braucht einen eigenen Datenordner - ein Datenordner kann immer nur von einem laufenden Server verwendet werden -, der einmal mit initdb initialisiert wurde, und einen anderen Port:
pg_ctl -o "-p 5656" start -D "C:\Program Files\PostgreSQL\14\data2"
Ausgabe:
waiting for server to start....2022-04-28 19:34:04.588 PKT [11784] LOG: redirecting log output to logging collector process
2022-04-28 19:34:04.588 PKT [11784] HINT: Future log output will appear in directory "log".
done
server started
In ähnlicher Weise könnten Sie dieselben Befehle auch für RESTART ausgeben.
pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"
or
pg_ctl -o "-p 5656" restart -D "C:\Program Files\PostgreSQL\14\data"
Ausgabe:
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-04-28 19:35:46.007 PKT [884] LOG: redirecting log output to logging collector process
2022-04-28 19:35:46.007 PKT [884] HINT: Future log output will appear in directory "log".
done
server started
In der Ausgabe können Sie sehen, wie der Server zunächst heruntergefahren wird, weil er bereits läuft, und dann neu gestartet und für alle Änderungen während seiner Sitzung protokolliert wird.
SERVICES.MSC verwenden, um eine PostgreSQL-Sitzung unter Windows zu STARTEN/STOPPEN
Da das Installationsprogramm PostgreSQL als Windows-Dienst registriert, können wir ihn in SERVICES.MSC, dem Windows-Dienste-Manager, steuern. Bei STOPPED- oder PAUSED-Diensten ist dies oft der einfachste Weg.
-
Drücken Sie Windows+R und geben Sie
SERVICES.MSCein. -
Sobald der Windows-Dienste-Manager geöffnet ist, suchen Sie in der Liste nach dem PostgreSQL-Serverdienst. Er kann wie folgt benannt sein:
postgresql-x64-14 - PostgreSQL Server 14.
-
Klicken Sie mit der rechten Maustaste darauf, um Ihren Server entweder zu
STARTEN,STOPPEN, zuPAUSIEREN,FORTZUSETZENoderNEU ZU STARTEN. Sie können sogar den Starttyp aufAUTOMATICändern, damit er beim nächsten Mal von selbst startet.
Der Dienste-Manager zeigt uns in der Regel auch die Ursache für den Ausfall eines bestimmten Dienstes an. Um den ausführbaren Pfad anzuzeigen, können Sie die Registerkarte General öffnen und ihn wie folgt sehen.
Den PostgreSQL-Server über die COMMAND PROMPT mit NET START starten
Wir können den Befehl NET START verwenden, um einen Dienst von der Eingabeaufforderung aus zu starten. Die Syntax lautet wie folgt.
NET START [service_name]
Möglicherweise müssen Sie den SERVICE_NAME für Ihren PostgreSQL-Dienst finden. Er wird auch auf der Registerkarte General erwähnt.
Jetzt können Sie einen Befehl wie den folgenden ausgeben.
net start postgresql-x64-14
Dadurch wird unser Server hochgefahren und eine Ausgabe wie die folgende angezeigt.
Ausgabe:
The postgresql-x64-14 - PostgreSQL Server 14 service is starting.
The postgresql-x64-14 - PostgreSQL Server 14 service was started successfully.
Denken Sie jedoch daran, dass die COMMAND PROMPT als ADMINISTRATOR und nicht als normaler Benutzer gestartet werden muss. Klicken Sie mit der rechten Maustaste auf die ausführbare Datei CMD.EXE und klicken Sie auf Run as Administrator. Andernfalls erhalten Sie einen Fehler wie den folgenden.
Ausgabe:
System error 5 has occurred.
Access is denied.
Heute haben wir also gelernt, wie man einen PostgreSQL-Server unter Windows auf verschiedene Weise startet. Wir hoffen, dass Sie diesen Artikel sorgfältig durchgelesen haben und ihn für Ihre Bedürfnisse nutzen können.