【PostgreSQL】PostgreSQLのインストールと初期設定

PostgreSQL

こんにちは、かつコーチです。

前回は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, 初心者向け, 環境構築

タイトルとURLをコピーしました