Windows で PostgreSQL サーバーを起動する

Bilal Shahid 2023年6月20日
  1. Windows での基本的な PG_CTL 初期化コマンド
  2. SERVICES.MSC を使用して Windows で PostgreSQL セッションを START/STOP する
Windows で PostgreSQL サーバーを起動する

今日は、Windows で PostgreSQL サーバーを起動する方法を学習します。 Windows での PostgreSQL のダウンロードとインストールに関する以前の記事では、セッションの開始方法、USER の作成方法、クエリの発行方法、およびさまざまなデータベース オブジェクトの操作方法について既に学習しました。

ここでのトピックは、ローカル システム内の他のユーザーが接続できる PostgreSQL サーバー セッションを実行しようとすることに焦点を当てています。

Windows での基本的な PG_CTL 初期化コマンド

PG_CTL は、PostgreSQL サーバーの起動と制御に使用されるユーティリティです。 PG_CTLは、制御された終了を提供し、さまざまなタスクをカプセル化し、データベースに関連するさまざまな操作に使用できるため、PostgreSQL セッションを初期化するための手動セットアップです。

Windows でサーバーを起動するには、PostgreSQL インストール内のコマンド プロンプトで、BIN フォルダーに移動します。

pg_ctl start -D "[\data folder directory]";

これにより、PostgreSQL サーバーが起動します。 他のユーザーがリッスンするコンピューターの別のポートでこれを行うには、次のようにクエリを使用します。

pg_ctl -o "-F -p [post_number]" start

括弧なしで定義された port_numberPORT NUMBER を入力します。 これにより、サーバーを起動し、他のユーザーが別のシステムでサーバーに接続できるようになります。

ただし、PostgreSQL サーバーが何らかの理由またはわずかな誤動作で停止した場合は、次のコマンドのいずれかを使用して動作させることをお勧めします。

pg_ctl restart -D "[\data folder];
pg_ctl start company; --may or may not work / may produce errors
...

多くの場合、これを行う必要はありません。 たとえば、PGADMIN を起動すると、PC の定義済みポートに PostgreSQL セッションがすでに作成されている傾向があり、他のユーザーが簡単にそれを発見できるようになっています。

PostgreSQL サーバーを起動するために上記のコマンドを記述する必要はない場合があります。

Windows で PG_CTL START/RESTART を発行する際にパスを指定する

単純な PG_CTL START/RESTART を呼び出すのが適切でない場合があります。 PostgreSQL インストール内の DATA フォルダー パスを指定してから、ブート コマンドを発行する必要がある場合があります。

上記のクエリを呼び出すと、OUTPUT が得られます。

出力:

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.

上記の出力は、PostgreSQL サーバーが既に実行されている場合に発生します。 既に PGADMIN を起動してバックグラウンドで実行しているため、上記のクエリを呼び出しても、既に使用されているポートでサーバーを初期化することはできません。

ただし、以下のことを行うと、同じ PC 上で別のサーバーが実行されます。

pg_ctl -o "-F -p 5656" start -D "C:\Program Files\PostgreSQL\14\data"

出力:

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

同様に、RESTART に対しても同じコマンドを発行できます。

pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"

or

pg_ctl -o "-F -p 5656" restart -D "C:\Program Files\PostgreSQL\14\data"

出力:

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

出力では、サーバーが既に実行されているために最初にシャットダウンされ、次に再起動され、セッション中の変更がログに記録される様子を確認できます。

SERVICES.MSC を使用して Windows で PostgreSQL セッションを START/STOP する

PSQL または PGADMIN から起動すると、PostgreSQL サーバーが PC 上でインスタンス化されることは既にわかっています。 SERVICES.MSC でいくつかのことを実行できます STOPPED または PAUSED サービスについては、Windows サービス マネージャー。

  1. Windows+R を押し、SERVICES.MSC と入力します。

  2. Windows サービス マネージャーが開いたら、リストで PostgreSQL サーバー サービスを検索します。 postgresql-x64-14 - PostgreSQL Server 14のように名前が付けられる場合があります。

    Windows サービス マネージャー

  3. これを右クリックして、サーバーをSTARTSTOPPAUSERESUME、またはRESTARTします。 次回から自動的に起動するように、起動時間を AUTOMATIC に変更することもできます。

Services Manager は、特定のサービスの失敗の原因も教えてくれる傾向があります。 実行可能パスを表示するには、一般タブを開いて次のように表示します。

一般タブ

COMMAND PROMPT から NET START を使用して PostgreSQL サーバーを起動する

NET START コマンドを使用して、コマンド プロンプトからサービスを開始できます。 構文は次のとおりです。

NET START [service_name]

PostgreSQL セッションの SERVICE_NAME を見つける必要がある場合があります。 一般タブにも記載されています。

一般的なサービス名

これで、次のようにコマンドを発行できます。

net start postgresql-x64-14;

これにより、サーバーが起動し、次のように出力が表示されます。

出力:

The postgresql-x64-14 - PostgreSQL Server 14 service is starting.
The postgresql-x64-14 - PostgreSQL Server 14 service was started successfully.

ただし、COMMAND PROMPT は、通常のユーザーではなく ADMINISTRATOR として開始する必要があることに注意してください。

CMD.EXE 実行可能ファイルを右クリックし、管理者として実行 をクリックします。 そうしないと、次のようなエラーが発生します。

出力:

System error 5 has occurred.

Access is denied.

そこで今日は、さまざまな方法で Windows で PostgreSQL サーバーを起動する方法を学びました。 この記事をよくお読みいただき、必要に応じてご利用いただければ幸いです。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub