PostgreSQL: PostgreSQLのインストールと初回接続の方法

最終更新:2026-08-26

PostgreSQLのインストールと初回接続は学習の第一歩です。この記事では、可能な限り最短の方法で動作するPGインスタンスをセットアップします。

1. 学習内容


2. 新入社員の実話

(1) 課題: 30分でデータベースを稼働させる

BobはEコマース企業に入社したばかりです。マネージャーから30分以内にローカルのPostgreSQL開発データベースをセットアップするよう依頼されました。BobはMySQLしか使ったことがなく、PGは完全に初めてでした:

(2) Docker + DBeaverで解決

Dockerを使ったPostgreSQLのインストールが最速の方法です。1つのコマンドで、システム固有の面倒がありません:

BASH
# DockerでPostgreSQL 17を取得して実行
docker run --name my-postgres \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -e POSTGRES_USER=bob \
  -e POSTGRES_DB=dev_shop \
  -p 5432:5432 \
  -d postgres:17

# コンテナが稼働していることを確認
docker ps | grep my-postgres

(3) 成果


3. インストール方法の比較

方法 メリット デメリット 最適な用途
Docker 高速、クリーン、再現可能、1コマンドで破棄 事前にDockerが必要 開発環境(推奨)
Windowsインストーラー GUIインストール、システムサービスとして自動登録 アンインストールが面倒、バージョン管理が困難 Windows開発者
macOS Homebrew CLIインストール、バージョン切替が容易 Homebrewの知識が必要 macOS開発者
Linuxパッケージマネージャ ネイティブ統合、最高のパフォーマンス ディストリビューションごとに異なるコマンド Linuxサーバー / 開発
クラウドサービス 運用不要、自動バックアップ コストがかかる、ネットワーク遅延 本番環境
100%
graph TB
    START["インストール方法を選択"] --> Q1{"本番パフォーマンスが<br/>必要?"}
    Q1 -->|"はい"| NAT["ネイティブインストール<br/>Linuxパッケージマネージャ"]
    Q1 -->|"いいえ"| Q2{"既にDockerが<br/>ある?"}
    Q2 -->|"はい"| DOCKER["Dockerインストール<br/>2分"]
    Q2 -->|"いいえ"| Q3{"使用OSは?"}
    Q3 -->|"Windows"| WIN["Windowsインストーラー<br/>EDBからダウンロード"]
    Q3 -->|"macOS"| BREW["Homebrewインストール<br/>brew install postgresql@17"]
    Q3 -->|"Linux"| APT["APT/YUMインストール<br/>postgresql-17"]

4. Dockerインストール(推奨)

(1) インストール手順

▶ サンプル: PostgreSQL 17のDockerインストール

BASH
# ステップ1: PostgreSQL 17イメージを取得
docker pull postgres:17

# ステップ2: カスタム設定でコンテナを実行
docker run --name pg-dev \
  -e POSTGRES_USER=devuser \
  -e POSTGRES_PASSWORD=devpass123 \
  -e POSTGRES_DB=shopdb \
  -p 5432:5432 \
  -v pgdata:/var/lib/postgresql/data \
  -d postgres:17

# ステップ3: コンテナが稼働していることを確認
docker ps

# ステップ4: コンテナ内でpsql経由で接続
docker exec -it pg-dev psql -U devuser -d shopdb

Output:

TEXT 📖 参照専用
psql (17.0)
Type "help" for help.

shopdb=>

(2) よく使うDocker管理コマンド

アクション コマンド
コンテナ起動 docker start pg-dev
コンテナ停止 docker stop pg-dev
コンテナ再起動 docker restart pg-dev
コンテナ削除 docker rm -f pg-dev
ログ表示 docker logs pg-dev
psqlに入る docker exec -it pg-dev psql -U devuser -d shopdb
💡 ヒント: -v pgdata:/var/lib/postgresql/dataはデータをDockerボリュームに永続化するため、コンテナを削除してもデータは残ります。


5. ネイティブインストール

(1) Windowsインストール

▶ サンプル: Windowsインストール手順

TEXT 📖 参照専用
1. https://www.enterprisedb.com/downloads/postgres からインストーラーをダウンロード
2. postgresql-17-windows-x64.exe を実行
3. インストールディレクトリを選択(デフォルト: C:\Program Files\PostgreSQL\17)
4. スーパーユーザー(postgres)のパスワードを設定
5. ポート番号を設定(デフォルト: 5432)
6. ロケールを選択(デフォルト: [Default locale])
7. 「Launch Stack Builder at exit」をチェック(オプション、追加ツール用)
8. 「完了」をクリック

インストール後、PostgreSQLは自動的にWindowsサービスとして登録され起動します。

(2) macOS Homebrewインストール

▶ サンプル: macOSインストール手順

BASH
# HomebrewでPostgreSQL 17をインストール
brew install postgresql@17

# PostgreSQLサービスを起動
brew services start postgresql@17

# デフォルトデータベースに接続
psql postgres

# バージョンを確認
SELECT version();

Output:

TEXT 📖 参照専用
# psql command executed successfully

(3) Linuxインストール

▶ サンプル: Ubuntu/Debianインストール手順

BASH
# PostgreSQL公式APTリポジトリを追加
sudo apt update
sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc

sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
  https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
  > /etc/apt/sources.list.d/pgdg.list'

# PostgreSQL 17をインストール
sudo apt update
sudo apt install -y postgresql-17

# postgresユーザーに切り替えて接続
sudo -u postgres psql

# インストールを確認
SELECT version();

Output:

TEXT 📖 参照専用
# psql command executed successfully
ディストリビューション インストールコマンド サービス管理
Ubuntu/Debian sudo apt install postgresql-17 sudo systemctl start/stop/restart postgresql
RHEL/CentOS sudo dnf install postgresql-server sudo systemctl start/stop/restart postgresql
Arch Linux sudo pacman -S postgresql sudo systemctl start/stop/restart postgresql

6. GUI管理ツール

(1) pgAdmin 4 と DBeaverの比較

観点 pgAdmin 4 DBeaver
位置付け PostgreSQL公式管理ツール ユニバーサルデータベース管理ツール
対応データベース PostgreSQLのみ PostgreSQL + MySQL + SQLite + Oracle、計20以上
費用 無料 Community無料 / Enterprise有料
プラットフォーム Webブラウザ + デスクトップ Windows / macOS / Linuxデスクトップ
PG機能サポート 最高(全PG機能をネイティブサポート) 良好(一般的な機能をサポート)
おすすめ用途 PG専用プロジェクト、PG固有機能 マルチDB環境、日常の開発/デバッグ
💡 ヒント: 両方インストールすることをおすすめします。pgAdminはPG固有の操作(実行計画の表示、拡張機能の管理など)に、DBeaverは日常的なSQL開発とデータ閲覧に使用してください。

(2) pgAdmin 4のインストール

▶ サンプル: pgAdmin 4でデータベースに接続する

TEXT 📖 参照専用
1. https://www.pgadmin.org/download/ からダウンロード
2. インストールしてpgAdmin 4を起動
3. 「Add New Server」をクリック
4. Generalタブ: Name = "Local Dev"
5. Connectionタブ:
   - Host: localhost(または127.0.0.1)
   - Port: 5432
   - Maintenance database: shopdb
   - Username: devuser
   - Password: devpass123
6. 「Save」をクリック

(3) DBeaverのインストール

▶ サンプル: DBeaverでPostgreSQLに接続する

TEXT 📖 参照専用
1. https://dbeaver.io/download/(Community Edition)からダウンロード
2. インストール��てDBeaverを起動
3. 「New Database Connection」(プラグアイコン)をクリック
4. PostgreSQLを選択
5. 接続設定を入力:
   - Host: localhost
   - Port: 5432
   - Database: shopdb
   - Username: devuser
   - Password: devpass123
6. 「Test Connection」をクリック(PG JDBCドライバーのダウンロードを促される)
7. 「Finish」をクリック

7. psqlコマンドライン接続

psqlはPostgreSQL組み込みのコマンドラインクライアントで、最も一般的な��話型ツールです。

(1) 接続パラメータ

パラメータ 短縮形 デフォルト 説明
--host -h localhost データベースサーバーアドレス
--port -p 5432 ポート番号
--username -U 現在のOSユーザー 接続ユーザー名
--dbname -d ユーザー名と同じ 接続先データベース名
--password -W なし パスワード入力を強制

▶ サンプル: psqlで接続する

BASH
# ローカルPostgreSQLに接続
psql -h localhost -p 5432 -U devuser -d shopdb

# または接続URIを使用
psql "postgresql://devuser:devpass123@localhost:5432/shopdb"

# またはDocker経由
docker exec -it pg-dev psql -U devuser -d shopdb

Output:

TEXT 📖 参照専用
CONTAINER ID   IMAGE     STATUS    
abc123         latest    Up 2 hours

(2) よく使うpsqlメタコマンド

psqlのメタコマンドは\で始まり、セミコロンは不要です:

コマンド 機能
\l 全データベースを一覧表示 \l
\c dbname データベースを切り替え \c shopdb
\dt 現在のデータベースのテーブル一覧 \dt
\d tablename テーブル構造を表示 \d users
\du 全ユーザー/ロールを一覧表示 \du
\df 全関数を一覧表示 \df
\dx インストール済み拡張機能を一覧表示 \dx
\conninfo 現在の接続情報を表示 \conninfo
\q psqlを終了 \q
\? ヘルプ(全メタコマンド) \?

▶ サンプル: 基本的なpsql操作

SQL
-- 接続情報を確認
\conninfo

-- データベースを一覧表示
\l

-- テストテーブルを作成
CREATE TABLE test_greeting (
    id SERIAL PRIMARY KEY,
    message TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT NOW()
);

-- データを挿入
INSERT INTO test_greeting (message) VALUES ('Hello, PostgreSQL!');

-- データを検索
SELECT * FROM test_greeting;

-- テストテーブルを削除
DROP TABLE test_greeting;

Output:

TEXT 📖 参照専用
-- \conninfo output:
You are connected to database "shopdb" as user "devuser" on host "localhost" at port "5432".

-- SELECT output:
 id |      message       |         created_at
----+--------------------+----------------------------
  1 | Hello, PostgreSQL! | 2026-07-13 10:30:00.123456

8. サービスの起動と停止

環境 起動 停止 再起動 状態確認
Docker docker start pg-dev docker stop pg-dev docker restart pg-dev docker ps
Linux (systemd) sudo systemctl start postgresql sudo systemctl stop postgresql sudo systemctl restart postgresql sudo systemctl status postgresql
macOS (Homebrew) brew services start postgresql@17 brew services stop postgresql@17 brew services restart postgresql@17 brew services list
Windows サービスが自▶起動 net stop postgresql-x64-17 net stop の後 net start サービス管理ツールで確認

9. 総合サンプル: インストールから確認まで

BASH
# ============================================
# 完全なワークフロー: インストール、接続、確認
# ゼロから稼働まで5コマンド
# ============================================

# 1. DockerでPostgreSQLを起動
docker run --name pg-dev \
  -e POSTGRES_USER=devuser \
  -e POSTGRES_PASSWORD=devpass123 \
  -e POSTGRES_DB=shopdb \
  -p 5432:5432 \
  -d postgres:17

# 2. コンテナの準備完了を待つ(約5秒)
sleep 5

# 3. psqlで接続
docker exec -it pg-dev psql -U devuser -d shopdb

# 4. psql内で: 確認クエリを実行
# (これらのコマンドをpsqlプロンプトで入力)

-- PostgreSQLのバージョンを表示
SELECT version();

-- 現在の接続を表示
\conninfo

-- 利用可能な拡張機能を表示
SELECT name, default_version FROM pg_available_extensions LIMIT 5;

-- テストテーブルを作成してデータを挿入
CREATE TABLE hello_pg (
    id SERIAL PRIMARY KEY,
    greeting TEXT,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

INSERT INTO hello_pg (greeting) VALUES
    ('Hello from PostgreSQL!'),
    ('Docker install works!'),
    ('Ready to learn!');

-- 確認
SELECT * FROM hello_pg;

-- クリーンアップ
DROP TABLE hello_pg;

-- psqlを終了
\q

# 5. 終了時にコンテナを停止
docker stop pg-dev

Output (抜粋):

TEXT 📖 参照専用
                                                     version
-----------------------------------------------------------------------------------------------------------------
 PostgreSQL 17.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit

     name      | default_version
---------------+-----------------
 plpgsql       | 1.0
 uuid-ossp     | 1.1
 pg_trgm       | 1.6

 id |       greeting        |          created_at
----+-----------------------+-------------------------------
  1 | Hello from PostgreSQL! | 2026-07-13 10:30:00+00
  2 | Docker install works!  | 2026-07-13 10:30:00+00
  3 | Ready to learn!        | 2026-07-13 10:30:00+00

❓ よくある質問

Q DockerインストールとネイティブインストールのPostgreSQLに違いはありますか?
A 機能的には同一です。唯一の違いは実行方法です。Dockerはコンテナ内で分離実行され、ネイティブはOS上で直接実行されます。開発にはDockerが推奨(クリーンで再現可能)、本番にはネイティブが推奨(最高のパフォーマンス、Dockerオーバーヘッドなし)です。
Q インストール後にPostgreSQLが動作しているかどうかを確認するには?
A 最も簡単な方法はpsql -U postgres -c "SELECT 1"です。1が返ればPGは稼働中で到達可能です。Dockerではdocker ps | grep postgresでコンテナの状態を確認します。
Q postgresユーザーのパスワードを忘れてしまいました。どうすれば?
A pg_hba.confの認証方式を一時的にtrust(パスワード不要)に変更し、PGを再起動してからALTER USER postgres PASSWORD 'new_password'でリセットし、認証方式をmd5またはscram-sha-256に戻します。
Q ポート5432が使用中です。どうすれば?
A lsof -i :5432(macOS/Linux)またはnetstat -ano | findstr 5432(Windows)で使用中のプロセスを特定します。そのプロセスを停止するか、PGのポートを変更します(postgresql.confport = 5433を設定)。
Q pgAdminの起動が非常に遅いです。どうすれば?
A pgAdmin 4はWebアプリで、初回起動時にブラウザエンジンをロードするため10〜30秒かかることがあります。継続的に遅い場合は、Desktopモードを試すか、DBeaver(起動が速い)に切り替えてください。
Q pgAdminだけでなくDBeaverも推奨する理由は?
A DBeaverは起動が速く、複数データベースをサポートし、よりスマートなSQLエディタ(自動補完/フォーマット)を備えています。pgAdminの強みはPG機能のより完全なサポート(例: pgAgentスケジュールジョブ、ER図ツール)です。両方使うのがベストです。

📖 まとめ


📝 練習問題

  1. 基本(★): DockerでPostgreSQL 17をインストールし、psqlで接続してSELECT version();を実行し、出力を記録してください。

  2. 中級(★★): DBeaverをインストールし、ローカルPostgreSQLへの接続を作成してください。DBeaverでtodo_itemsテーブル(カラム: id, タイトル, completed, created_at)を作成し、3行のテストデータを挿入して検索してください。

  3. チャレンジ(★★★): pgAdmin 4とDBeaverの両方をインストールし、同じPostgreSQLインスタンスに接続してください。各ツールでpg_available_extensionsシステムカタログを表示し、表示方法の違いを比較してください。この種のシステムデータに対してどちらのツールが好みか、その理由を記述してください。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%