PostgreSQL 17の導入と初期設定
1. PostgreSQLのインストール
- Explorerを使ってインストーラ(
postgresql-17.○-○-windows-x64.exe)を起動します。 - セキュリティ警告(ユーザーアカウント制御)が出たら、[はい]をクリックして許可します。

Welcome to the PostgreSQL Setup Wizard画面が表示されたら、[Next]をクリックします。

- インストールディレクトリはデフォルトのまま、[Next]をクリックします。

-
コンポーネントを次のように選択します。
PostgreSQL Server、pgAdmin 4、Command Line Toolsは、チェックを付けたままにします。Stack Builderは研修で使わないため、チェックを外します(インストールしません)。
Command Line Toolsには、ターミナルでPostgreSQLを操作するためのpsqlが含まれます。本書ではpsqlを使用するため、必ず選択します。

- Data Directory(データベースの格納場所)もデフォルトのまま、[Next]をクリックします。

- パスワードを設定します。
本書では便宜上、jdbcを設定します。この値は、外部から接続できない研修用PCだけで使用する、演習専用のパスワードです。
【注意】学習用パスワード
jdbcを使うリスク
postgresは、データベースの作成・削除やユーザーの権限変更などを行える、PostgreSQLの管理者ユーザーです。接続できる経路を持つ第三者にパスワードjdbcを知られると、その第三者がpostgresとしてデータベースを操作できるおそれがあります。また、PostgreSQLサービスを実行するWindowsアカウントは、インストール時の設定により異なります。これはデータベースの管理者ユーザー
postgresとは別のものです。単純なパスワードを、本番環境・社内共有PC・ネットワークに接続する環境で使ったり、ほかのサービスで使い回したりしてはいけません。実務では、推測されにくい十分な長さのパスワードを個別に設定し、アプリケーション用には必要な権限だけを持つ専用ユーザーを作成します。
パスワードを正確に2回入力したら、[Next]をクリックします。

- PostgreSQLが使用するポート番号を
54320に変更して、[Next]をクリックします。

【補足】ポート番号
54320を使用する理由PostgreSQLのデフォルトのポート番号は
5432ですが、既存のPostgreSQLとポート番号が重なる可能性を下げるため、本書では54320を使用することとします。
以降のpsqlやJavaプログラムでも、同じポート番号を指定します。
- ロケールをクリックして、
Cを選択します。

【補足】本書で
Cロケールを選ぶ理由本書では、学習環境による文字列の並び順の差を減らし、演習結果を揃えやすくするため、
Cロケールを選択します。
Cロケールでは、日本語の文字列は五十音順や辞書順には並びません。
日本語として自然な並び順が必要な業務システムでは、要件に応じて日本語ロケールやICU照合順序を検討します。
- これまでの選択を確認する画面が表示されたら、[Next]をクリックします。

- インストールの準備が整ったことを知らせる画面が表示されたら、[Next]をクリックします。

- インストール完了まで数分待ちます。

- [Finish]をクリックして終了します。

2. 追加の設定
2.1. psqlを使えるようにする
PostgreSQLの操作にはpsqlを使用します。本書では、PowerShell 7などのターミナルからpsqlを起動します。
PostgreSQLインストーラーはpsqlの場所を環境変数Pathへ自動では追加しないため、次の設定を手動で行います。
-
スタートメニューを開きます。
-
スタートメニューの上部検索エリアに「環境変数」と入力し、検索を実行します。
-
[システム環境変数を編集]を選択します。
-
開いた画面で[環境変数]をクリックします。
-
画面上部の「ユーザー環境変数」から、変数
Pathをダブルクリックします。 -
[新規]をクリックし、次のパス(
psql.exeがあるフォルダー)を追加します。C:\Program Files\PostgreSQL\17\bin**【注意】**PostgreSQLのインストール先を変更した場合は、そのインストールフォルダーの末尾に
\binを付けたパスを追加してください。 -
[OK]をクリックして、これまで開いてきたすべての設定画面を閉じます。
-
開いているターミナルをすべて閉じ、新しくPowerShell 7を開きます。次のコマンドを実行して、
psqlが見つかることとバージョンを確認します。Get-Command psql psql --versionCommandType Name Version ----------- ---- ---- Application psql.exe 17.… psql (PostgreSQL) 17.x【補足】システム環境変数の
Pathへ追加するケース複数のWindowsユーザーが
psqlを使用する場合は、下側の「システム環境変数」のPathへ追加します。この操作には管理者権限が必要です。【補足】
Pathを変更できない場合どうしても
Pathを変更できないPCの場合は、psql.exeの絶対パスを指定して実行することも可能です。PowerShellでは、パスに空白が含まれるため、先頭に&を付けます。# PowerShellで絶対パス指定する例 & 'C:\Program Files\PostgreSQL\17\bin\psql.exe' -U postgres -p 54320ただし、この場合は以降の
psqlコマンドも絶対パスを付けて実行することになります。
本書の学習環境(PowerShell 7、PostgreSQL、Eclipse)で使う文字コードはUTF-8で統一します。
PowerShell 7でpsqlを使用するときのコンソールコードページをUTF-8にするため、プロファイルに設定を書き込みます。
次の節では、コンソールコードページをUTF-8に設定し、psqlのクライアント文字コードがUTF8であることを確認します。
2.2. $PROFILEのパスを確認する
PowerShellで次のコマンドを実行します。
$PROFILE
出力例:
C:\Users\(ユーザー名)\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
$PROFILEは、PowerShell 7用プロファイルの保存先を表す自動変数です。ファイルがまだ存在しない場合でも、この保存先のパスが表示されます。ここにファイルを作成すると、PowerShell 7の起動時に自動実行されます。
2.3. プロファイルのフォルダーとファイルを作成する
次のコマンドを実行します。
- PowerShell 7用プロファイル保存先のフォルダー(PowerShell)が存在しない場合に作成する
New-Item -ItemType Directory -Path (Split-Path $PROFILE) -Force - Microsoft.PowerShell_profile.ps1 が存在しない場合に空ファイルを作成する
if (!(Test-Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
2.4. $PROFILEを編集する
次のコマンドを実行します。
notepad $PROFILE
メモ帳が開くので、末尾に次の内容を追加します。
-
ターミナルの文字コードをUTF-8にする
chcp 65001 > $nullchcp 65001 > $nullは、ターミナルのコードページをUTF-8へ変更し、変更時のメッセージを表示しないための設定です。$PROFILEに書くことで、PowerShell 7を起動するたびに自動実行されます。
保存して閉じます。
2.5. PowerShell 7を再起動する
- PowerShell 7を終了します。
- もう一度PowerShell 7を起動します。
2.6. 設定が有効になったことを確認する
PowerShell 7で次を実行します。
chcp
期待される結果は次のとおりです。
chcp
現在のコード ページ: 65001
chcpのメッセージはWindowsの表示言語によって変わります。出力に65001が含まていればOKです。
2.7. 設定の確認(文字コード指定の確認)
psqlを起動して、サーバー側(PostgreSQL)とpsql接続側(PowerShell)の文字コード指定が、共にUTF8であることを確認します。
- PowerShell 7を起動します(スタートボタンを右クリックし、[ターミナル]を選択)。
- ターミナル画面(PowerShell 7)で次のように入力します。
psql -U postgres -p 54320
- psql(対話型ターミナルクライアント)がパスワードを求めたら、
jdbcを入力して[Enter]キーを押します。【注意】図では赤字で jdbc と表示していますが、実際には画面に表示されません

- postgres=# とPostgreSQLの入力プロンプトが表示されます。

【補足】
今回の設定では、psql 起動時にコードページに関する WARNING が表示されることがあります。
これはコンソール(PowerShell 7)のコードページ(65001)とWindows のシステムコードページ(932)が一致していないことによるものです。この WARNING は設定間違いを示すものではありません。
- postgres=# の入力プロンプトに続けて、以下のコマンドを入力して実行してください。
SHOW server_encoding;
SHOW client_encoding;
期待される結果は次のとおりです。
server_encoding -> UTF8
client_encoding -> UTF8

server_encoding、client_encodingの両方ともUTF8であれば正しく設定できています。
3. 学習用データベース(rakuraku)のセットアップ
本書の実習用データベースをセットアップします。学習を進める上で必須です。必ずセットアップしてください。
以下、前節2.7.の手順で、すでにpsqlが起動していることを前提に説明します。
- 本サイトのダウンロードメニューから
create_rakuraku.sqlをダウンロードします。 - メモ帳などの任意のエディターで
create_rakuraku.sqlを開きます。 - 開いた
create_rakuraku.sqlの全行をコピーし、PostgreSQLの入力プロンプト postgres=# に張り付けてからエンターを押してしばらく待ちます。 - 以下のように表示されたらセットアップは完了です。
id | entry_date | cat_id | cat_name | note | income | expense
----+------------+--------+----------+--------------+--------+---------
1 | 2026-03-03 | 2 | 配当金 | 株の配当金 | 30000 | 0
2 | 2026-03-03 | 4 | 食費 | 米5キロ | 0 | 4500
3 | 2026-03-25 | 1 | 給与 | 3月給料 | 280000 | 0
6 | 2026-04-05 | 4 | 食費 | 酒代 | 0 | 7000
4 | 2026-04-11 | 3 | 雑収入 | 宝くじ当選金 | 1000 | 0
5 | 2026-04-14 | 5 | 住居費 | 町内会費 | 0 | 5000
7 | 2026-04-25 | 1 | 給与 | 4月給料 | 280000 | 0
8 | 2026-05-01 | 6 | 教育費 | セミナー費 | 0 | 6000
9 | 2026-05-06 | 4 | 食費 | 缶詰 | 0 | 3800
10 | 2026-05-10 | 7 | 医療費 | 皮膚科受診 | 0 | 2000
11 | 2026-05-25 | 1 | 給与 | 5月給料 | 280000 | 0
12 | 2026-06-18 | 8 | 雑費 | 車補修 | 0 | 30000
13 | 2026-06-19 | 4 | 食費 | 冷凍食品 | 0 | 8000
15 | 2026-06-25 | 1 | 給与 | 6月給料 | 280000 | 0
16 | 2026-06-25 | 1 | 給与 | ボーナス | 900000 | 0
14 | 2026-07-20 | 6 | 教育費 | 塾代 | 0 | 25000
17 | 2026-07-20 | 7 | 医療費 | 餞別 | 0 | 10000
(17 rows)
【注意】このスクリプトを実行すると、rakurakuデータベースと、その中のデータはすべて削除されます。
実行前には、rakurakuへ接続しているpsql、pgAdmin、Javaプログラムを終了してください。
4. その他の操作
手順通りに進めればPostgreSQLやpsqlの設定は以上で完了です。
以下は、状況により必要になる操作についての解説です。必要に応じて参照してください。
4.1. PowerShellのバージョン確認方法
本書ではシェルとしてPowerShell 7を使用することを前提にしています。
以下は、シェルがPowerShell 7であることを確認する手順です。
念のため、本書で学習を進める前に、お使いのPowerShellのバージョンを確認しておくことをお勧めします。
- スタートを右クリックし、[ターミナル]を選択してPowerShell 7を開きます。
- 次のコマンドでPowerShellのバージョンを確認します。
$PSVersionTable
実行例
Name Value
---- -----
PSVersion 7.6.3
PSEdition Core
GitCommitId 7.6.3
OS Microsoft Windows 10.0.26200
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.4
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
確認のポイントは、PSEditionがCoreであり、PSVersionが7.xであることです。
【補足】古いPowerShellが起動している場合
互換性維持のための古いPowerShell 5系統が起動することがあります。
その場合は、ターミナルのタブ見出し(プラスボタン)の右側にある∨をクリックし、アイコン背景が黒地のPowerShellを選択してください。
4.2. psqlの起動時オプション
本書で使用するデータベース名はrakurakuで、ポート番号は54320を使います。
ご利用環境の都合で、データベース名やポート番号を変えた場合には、以下を参考にしてPostgreSQLデータベースにログインしてください。
| オプション | 説明 |
|---|---|
-h |
接続先のコンピュータ名(ホスト名)を指定する |
-U |
ユーザーを指定する |
-d |
データベース名を指定する |
-p |
ポート番号を指定する |
ユーザーpostgresでmydbに接続する例です。接続ポートはデフォルトの5432なので省略できます。
psql -U postgres -d mydb
デフォルト以外のポート番号を指定して、ユーザーpostgresでmydbに接続する例です。
ポート番号をデフォルトから変更する場合は、-pオプションに続けてポート番号を明記する必要があります。
psql -p 54320 -U postgres -d mydb
接続先のコンピュータ名(ホスト名)を指定する例です。
Windowsではホスト指定を省略するとlocalhostが使われます。
psql -h localhost -p 54320 -U postgres -d mydb
4.3. PostgreSQLサービスの再起動
設定を確実にPostgreSQLに反映するため、postgresql.confなどの設定ファイルを修正した場合は、PostgreSQLサービスを再起動します。以下にその手順を示します。
4.3.1. ターミナルを管理者モードで開く
- スタートメニューを開きます。
- スタートメニューの上部検索エリアに「powershell」と入力し、検索を実行します。
- [Run as Administrator]を選択します。
- PowerShell 7が管理者モードで開きます。

4.3.2. PostgreSQLのサービス名を調べる
開いたPowerShell(管理者モード)で以下のコマンドを実行します。
Get-Service *postgres*
出力例
Status Name DisplayName
------ ---- -----------
Running postgresql-x64-17 postgresql-x64-17
上例の場合、Name列に表示されたサービス名が、PostgreSQLのサービス名です。
postgresql-x64-17はインストールしたPostgreSQLのバージョンにより変わります。
実際にName列に表示されたサービス名を以下の操作では使ってください。
【補足】コマンドプロンプトの場合
開いたターミナルがコマンドプロンプトだった場合には、次のコマンドでも確認できます。sc.exe query type= service state= all | findstr /I "postgresql"# 出力例 SERVICE_NAME: postgresql-x64-17 DISPLAY_NAME: postgresql-x64-17
【注意】サービス名を変更している場合
サービス名を任意に変更している場合など、上のコマンドで見つからないときは、スタートメニューで「サービス」を検索して開きます。
PostgreSQLのサービスを右クリックして[プロパティ]を開き、表示されたサービス名を確認します。
4.3.3. PostgreSQLサービスの再起動
サービス名がpostgresql-x64-17と表示された場合は、次のコマンドでサービスを停止し、再度起動します。
【注意】サービスを停止すると、接続中のpsqlやJavaプログラムも切断されます。必ず、これらのプログラムを終了してから実行してください。
net stop postgresql-x64-17
net start postgresql-x64-17
