こんにちは、かつコーチです。
前回はPostgreSQLの特徴とMySQLとの違いを解説しました。
今回は実際に手元の環境にPostgreSQL 16系をインストールし、最初に押さえておきたい初期設定まで解説します。
環境構築でつまずくと学習のモチベーションが下がってしまうので、代表的な3つの方法を比較しながら、あなたの環境に合った方法を選べるようにします。
インストール方法の選択肢を比較する
3つの代表的な方法
PostgreSQLのインストール方法には主に次の3つがあります。
| 方法 | 特徴 | 向いている人 |
|---|---|---|
| 公式インストーラー(Windows/Mac) | GUIで操作でき、pgAdminも同時に入る | とにかく手早く始めたい初心者 |
| Homebrew(Mac) | コマンド操作に慣れられる、バージョン管理がしやすい | ターミナル操作に抵抗がない人 |
| Docker | ホスト環境を汚さず、チームで環境を統一しやすい | 複数バージョンを使い分けたい人、チーム開発を想定している人 |
どれを選べばいいか:判断軸
- PostgreSQLに初めて触る、GUIで操作したい → 公式インストーラー
- 普段からHomebrewでツールを管理している(Mac) → Homebrew
- 既にDockerを使っている、あるいは将来チームで環境を統一したい → Docker
どの方法でも最終的に覚えるSQLは同じなので、まずは自分にとって導入のハードルが低い方法を選んで問題ありません。
私自身は普段の検証ではDockerを使うことが多いですが、初めてPostgreSQLに触る人にはまず公式インストーラーかHomebrewをすすめています。
余計なつまずきを減らして、SQLの学習に集中できるからです。
手順1:Homebrewでインストールする(Mac)
Macでターミナル操作に慣れている場合は、Homebrewでのインストールが簡単です。
# PostgreSQL 16系をインストール
brew install postgresql@16
# パスを通す(zshの場合)
echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# PostgreSQLサービスを起動
brew services start postgresql@16
インストールが完了したら、バージョンを確認しておきましょう。
psql --version
# psql (PostgreSQL) 16.x
手順2:Dockerでインストールする
チームでの環境統一を意識するなら、Dockerを使うのがおすすめです。
docker-compose.ymlを用意して、コンテナとしてPostgreSQLを起動します。
# docker-compose.yml
services:
db:
image: postgres:16
environment:
POSTGRES_USER: appuser
POSTGRES_PASSWORD: apppassword
POSTGRES_DB: appdb
ports:
- "5432:5432"
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
# コンテナを起動
docker compose up -d
# 起動確認
docker compose ps
Dockerを使うメリットは、ホストのMac/Windows環境を汚さずに、複数のPostgreSQLバージョンをプロジェクトごとに使い分けられる点です。
volumesでデータを永続化しておけば、コンテナを再起動してもデータは消えません。
手順3:初期設定を行う
ロールとデータベースを作成する
インストール直後はpostgresというスーパーユーザーロールとpostgresデータベースだけが存在する状態です。
アプリケーション用に専用のロール(ユーザー)とデータベースを作成しておきましょう。
-- スーパーユーザーで接続した状態で実行
CREATE ROLE appuser WITH LOGIN PASSWORD 'apppassword';
CREATE DATABASE appdb OWNER appuser;
MySQLではCREATE USERという表現に慣れている人も多いと思いますが、PostgreSQLではロールという概念でユーザーと権限グループの両方を表現します。
LOGIN権限を付けたロールが、実質的なユーザーとして機能します。
接続確認をする
作成したロールでデータベースに接続できるか確認します。
psql -U appuser -d appdb -h localhost
接続できると、プロンプトがappdb=>のように変わります。
これでPostgreSQLへの接続準備は完了です。
つまずきやすいポイント:認証エラー
peer認証で接続できないという落とし穴
Homebrewでインストールした直後、次のようなエラーに遭遇することがあります。
❌ Before:ユーザー名を省略して接続しようとしてエラーになる
psql appdb
# psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed:
# FATAL: role "your_mac_username" does not exist
私が初めてローカルにPostgreSQLを入れたとき、まさにこのエラーで数十分ハマりました。
原因は、psqlをユーザー名なしで実行すると、OSのログインユーザー名と同名のロールで接続しようとする仕様になっているためです。
MacのユーザーIDがyour_mac_usernameだとしても、PostgreSQL側にそのロールが存在しなければ、当然ながら接続に失敗します。
✅ After:ユーザー名を明示して接続する
psql -U appuser -d appdb -h localhost
-Uでロール名、-dでデータベース名を明示的に指定すれば、この問題は解決します。
「エラーメッセージに出てきたロール名」と「自分が作ったロール名」が一致しているかを、まず確認する癖をつけておくと、この手のエラーに素早く対処できるようになります。
まとめ
この記事のポイント
- インストール方法は公式インストーラー・Homebrew・Dockerの3択から、自分の環境に合わせて選ぶ
- PostgreSQL 16系ではロールとデータベースを分けて作成する
- MySQLの「ユーザー」に相当する概念が、PostgreSQLでは「ロール」
psqlをユーザー名なしで実行するとOSのログインユーザー名で接続しようとするため、-Uオプションで明示するとエラーを防げる
次に読むべき記事
インストールと初期設定ができたら、次はGUIツールと組み合わせて日常的な操作に慣れていきましょう。
次回はpsqlとpgAdminの基本的な使い方を解説します。
→ 次の記事:psql・pgAdminの使い方の基本
タグ: PostgreSQL, 初心者向け, 環境構築