PostgreSQL: PostgreSQLのインストールと初回接続の方法
最終更新:2026-08-26
PostgreSQLのインストールと初回接続は学習の第一歩です。この記事では、可能な限り最短の方法で動作するPGインスタンスをセットアップします。
1. 学習内容
- Windows / macOS / LinuxへのPostgreSQLのネイティブインストール
- Dockerでのインストール(開発環境に推奨)
- pgAdmin 4およびDBeaver GUI管理ツールのインストール
- psqlコマンドラインでの接続と基本操作
- サービスの起動/停止と接続パラメータの設定
2. 新入社員の実話
(1) 課題: 30分でデータベースを稼働させる
BobはEコマース企業に入社したばかりです。マネージャーから30分以内にローカルのPostgreSQL開発データベースをセットアップするよう依頼されました。BobはMySQLしか使ったことがなく、PGは完全に初めてでした:
- どのバージョンをダウンロードすればよいかわからない
- インストール成功を確認する方法がわからない
- GUIツールも必要と聞いた — pgAdminかDBeaverか?
(2) Docker + DBeaverで解決
Dockerを使ったPostgreSQLのインストールが最速の方法です。1つのコマンドで、システム固有の面倒がありません:
# 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) 成果
- 2分で完了(ネイティブインストールの10〜15分と比較)
- 一貫した環境(開発/テスト/本番の設定を再利用可能)
- 1コマンドで破棄して再構築 — 壊す心配がない
3. インストール方法の比較
| 方法 | メリット | デメリット | 最適な用途 |
|---|---|---|---|
| Docker | 高速、クリーン、再現可能、1コマンドで破棄 | 事前にDockerが必要 | 開発環境(推奨) |
| Windowsインストーラー | GUIインストール、システムサービスとして自動登録 | アンインストールが面倒、バージョン管理が困難 | Windows開発者 |
| macOS Homebrew | CLIインストール、バージョン切替が容易 | Homebrewの知識が必要 | macOS開発者 |
| Linuxパッケージマネージャ | ネイティブ統合、最高のパフォーマンス | ディストリビューションごとに異なるコマンド | Linuxサーバー / 開発 |
| クラウドサービス | 運用不要、自動バックアップ | コストがかかる、ネットワーク遅延 | 本番環境 |
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インストール
# ステップ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:
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インストール手順
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インストール手順
# HomebrewでPostgreSQL 17をインストール
brew install postgresql@17
# PostgreSQLサービスを起動
brew services start postgresql@17
# デフォルトデータベースに接続
psql postgres
# バージョンを確認
SELECT version();
Output:
# psql command executed successfully
(3) Linuxインストール
▶ サンプル: Ubuntu/Debianインストール手順
# 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:
# 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環境、日常の開発/デバッグ |
(2) pgAdmin 4のインストール
▶ サンプル: pgAdmin 4でデータベースに接続する
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に接続する
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で接続する
# ローカル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:
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操作
-- 接続情報を確認
\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:
-- \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. 総合サンプル: インストールから確認まで
# ============================================
# 完全なワークフロー: インストール、接続、確認
# ゼロから稼働まで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 (抜粋):
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
❓ よくある質問
psql -U postgres -c "SELECT 1"です。1が返ればPGは稼働中で到達可能です。Dockerではdocker ps | grep postgresでコンテナの状態を確認します。pg_hba.confの認証方式を一時的にtrust(パスワード不要)に変更し、PGを再起動してからALTER USER postgres PASSWORD 'new_password'でリセットし、認証方式をmd5またはscram-sha-256に戻します。lsof -i :5432(macOS/Linux)またはnetstat -ano | findstr 5432(Windows)で使用中のプロセスを特定します。そのプロセスを停止するか、PGのポートを変更します(postgresql.confでport = 5433を設定)。📖 まとめ
- Dockerインストールが開発環境セットアップの最速方法(1コマンドで2分)
- Windows / macOS / Linuxすべてにネイティブインストールオプションあり。本番にはネイティブ推奨
- pgAdmin 4はPG公式ツール、DBeaverはユニバーサル — 両方インストールして補完的に使用
- psqlはCLI対話型ツール。
\l/\c/\dt/\d/\qを覚えれば開始には十分 - 接続パラメータ: host / port / ユーザー / password / データベース、URI形式の接続もサポート
- サービス起動/停止: Dockerは
docker start/stop、Linuxはsystemctl、macOSはbrew services
📝 練習問題
-
基本(★): DockerでPostgreSQL 17をインストールし、psqlで接続して
SELECT version();を実行し、出力を記録してください。 -
中級(★★): DBeaverをインストールし、ローカルPostgreSQLへの接続を作成してください。DBeaverで
todo_itemsテーブル(カラム: id, タイトル, completed, created_at)を作成し、3行のテストデータを挿入して検索してください。 -
チャレンジ(★★★): pgAdmin 4とDBeaverの両方をインストールし、同じPostgreSQLインスタンスに接続してください。各ツールで
pg_available_extensionsシステムカタログを表示し、表示方法の違いを比較してください。この種のシステムデータに対してどちらのツールが好みか、その理由を記述してください。