PostgreSQL 入門

PostgreSQL インストールと設定

本章では、PostgreSQLを異なるオペレーティングシステム(OS)にインストールする手順をステップ・バイ・ステップで解説し、各環境で注意すべき核心的な事項を強調します。

1. インストール前の準備工作

正式にインストールを始める前に、以下のいくつかの重要な要素を評価することで、インストールプロセスをよりスムーズに進めることができます。

1.1 システム要件

PostgreSQLのシステム要件は通常それほど高くありませんが、具体的なユースケースに依存します。開発やテスト目的であれば、標準的なPCで十分です。しかし、本番環境(プロダクション環境)で使用する場合は、以下の要素を慎重に検討してください。

  • オペレーティングシステム: PostgreSQLはWindows、macOS、Linuxなど、多様なOSをサポートしています。サーバーやワークステーションに合わせて適切なバージョンを選択してください。
  • ハードウェアリソース: CPU、メモリ(RAM)、ディスク容量を評価します。小規模な開発用データベースであれば最小限のリソースで動作しますが、大量の同時接続が発生する大規模データベースの場合、メモリの増設や高速なストレージデバイスの使用がパフォーマンスを大幅に向上させます。
  • ストレージ計画: 予想されるデータベースの規模に基づき、ストレージ容量を計画してください。PostgreSQLは大規模データベースの処理に長けていますが、十分な物理ストレージが前提となります。読み書き速度を向上させるために、SSD(ソリッドステートドライブ)の使用を推奨します。
  • ネットワーク条件: データベースにリモートアクセスする計画がある場合、安定かつセキュアなネットワーク接続が不可欠です。

1.2 インストール方法の選択

PostgreSQLをインストールする方法はいくつかあり、それぞれに利点があります。

  • 公式インストーラー: 最も一般的な方法で、Windows、macOS、Linux向けに初心者フレンドリーなGUI(グラフィカルユーザーインターフェース)のインストールパッケージが提供されています。通常、pgAdminなどの基本ツールが同梱されています。
  • パッケージマネージャー (Package Manager): Linuxシステムでは、パッケージマネージャー(Debian/Ubuntuなら apt、CentOS/RHELなら yum)を使用することで、インストールプロセスを簡略化し、依存関係を自動的に処理できます。
  • Docker コンテナ: Dockerを使用すると、コンテナ内でPostgreSQLを実行でき、異なる環境間でも一貫したデプロイ体験を維持するのに最適です。
  • ソースコードからのコンパイル: アドバンスドユーザーは、最大限のカスタマイズを実現するために、ソースコードから直接ビルドすることを選択できます。

1.3 セキュリティに関する注意事項

PostgreSQLのインストールと設定において、セキュリティは最優先事項です。

  • ユーザーアカウント: インストールプロセス中に、PostgreSQLのスーパーユーザーアカウント(通常は postgres)が作成されます。このアカウントには必ず強力なパスワードを設定してください。
  • ファイアウォール: PostgreSQLのデフォルトポートである5432ポート経由の接続を許可するようにファイアウォールを設定しますが、信頼できるソースのみに制限してください。
  • 認証方式: PostgreSQLは多様な認証方式をサポートしています。デフォルトの ident モードは本番環境には適さない場合があります。パスワード暗号化には md5 またはよりセキュアな scram-sha-256 の使用を推奨します。

2. Windows へのインストール

公式のPostgreSQLインストーラーは、Windowsユーザーにとって最も直接的なインストール方法を提供します。

2.1 インストーラーのダウンロード

  1. PostgreSQL公式サイト (www.postgresql.org) にアクセスします。
  2. 「Downloads」ページへ移動します。
  3. Windowsバージョンを選択します。
  4. 必要なPostgreSQLバージョンのインストーラーをダウンロードします。

2.2 インストーラーの実行

  1. ダウンロードした .exe ファイルをダブルクリックして実行します。
  2. 画面上のGUIプロンプトに従って操作します。
  3. インストーラーは以下の主要なステップを案内します。
    • インストールディレクトリ (Installation Directory): PostgreSQLのインストール場所を選択します。デフォルトパスは通常 C:\Program Files\PostgreSQL\<バージョン番号> です。
    • データディレクトリ (Data Directory): データベースファイルが保存される場所です。デフォルトパスは C:\Program Files\PostgreSQL\<バージョン番号>\data です。パフォーマンスとバックアップの観点から、データを別の物理ドライブに保存することが推奨されます。
    • コンポーネント (Components): インストールするコンポーネントを選択します。コアとなる PostgreSQL Server、pgAdmin(管理ツール)、Command Line Tools(コマンドラインツール)のチェックを推奨します。
    • パスワード (Password): スーパーユーザー postgres の強力なパスワードを設定します。このユーザーはデータベース内で最高権限を持ちます。
    • ポート (Port): デフォルトポートは5432です。ポート競合などの特殊な理由がない限り、デフォルトのままにします。
    • ロケール (Locale): データベースクラスターのデフォルトの地域設定を選択します。

2.3 インストールの確認

インストール完了後、以下の方法で確認できます。

  • pgAdmin: pgAdminを起動し、postgres ユーザーと設定したパスワードを使用してPostgreSQLサーバーに接続します。
  • psql: Windowsコマンドプロンプト(CMD)を開き、psql -U postgres と入力します。これにより postgres ユーザーとしてサーバーに接続され、パスワードの入力が求められます。

3. macOS へのインストール

macOSでは、EnterpriseDBが提供するGUIインストーラー、またはHomebrewのようなパッケージマネージャーを使用できます。

3.1 EnterpriseDB インストーラーの使用

この方法はWindowsのインストールプロセスと非常に似ています。

  1. 公式サイトの「Downloads」へ移動し、macOSバージョンを選択してパッケージをダウンロードします。
  2. ダウンロードした .app イメージファイルを実行します。
  3. 画面の指示に従い、インストールディレクトリ、データディレクトリ、コンポーネント、パスワード、ポート、ロケールを設定します。

3.2 Homebrew の使用

HomebrewはmacOSで非常に人気のあるパッケージ管理ツールです。

1. Homebrewが未インストールの場合、ターミナルで以下を実行してインストールします:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. リポジトリを更新します:

brew update

3. PostgreSQLをインストールします:

brew install postgresql

4. バックグラウンドサービスとして起動します:

brew services start postgresql

5. インストールを確認します:

psql -U postgres

3.3 環境変数の設定

Homebrewでインストールした後、PostgreSQLのパスを環境変数に追加する必要がある場合があります。

ターミナルで以下を実行してPATHに追加します:

echo 'export PATH="/opt/homebrew/opt/postgresql@14/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

(注意:インストールした具体的なバージョンや使用しているシェル設定ファイルに合わせて調整してください。)

4. Linux (Debian/Ubuntu) へのインストール

Debianベースのシステム(Ubuntuなど)では、apt パッケージマネージャーが最適な選択です。

4.1 リポジトリの追加とインストール

1. ローカルのパッケージインデックスを更新します:

sudo apt update

2. postgresql と追加コンポーネントをインストールします:

sudo apt install postgresql postgresql-contrib

注:postgresql-contrib パッケージには、多くの実用的な追加ツールや拡張機能が含まれています。

4.2 設定と起動

インストール完了後、通常サービスは自動的に起動します。以下のコマンドでステータスを確認できます:

sudo systemctl status postgresql

デフォルトでは、PostgreSQLは「peer」認証モードを使用します。これは、現在ログインしているOSユーザーが postgres であれば、パスワードなしでデータベースに接続できることを意味します。

4.3 セキュリティ設定の強化

まず、データベース内の postgres ユーザーにパスワードを設定します:

sudo -u postgres psql

データベースのコマンドラインに入った後、SQLを実行します:

-- 強力なパスワードを入力してください
ALTER USER postgres PASSWORD 'your_strong_password';
\q

次に、セキュアな md5 または scram-sha-256 認証モードを使用するように設定します。これには pg_hba.conf ファイル(クライアント認証ルールを管理)を編集する必要があります:

sudo nano /etc/postgresql/<バージョン番号>/main/pg_hba.conf

ローカル接続に関するセクションを探し、METHOD(認証方法)を md5 または scram-sha-256 に変更します。例:

# "local" は Unix ドメインソケット接続のみ
local   all             postgres                                md5
# IPv4 ローカル接続:
host    all             all             127.0.0.1/32            md5
# IPv6 ローカル接続:
host    all             all             ::1/128                 md5

保存して終了した後、サービスを再起動して設定を反映させます:

sudo systemctl restart postgresql

5. Linux (CentOS/RHEL) へのインストール

Red Hatベースのシステム(CentOS/RHELなど)では、yum パッケージマネージャーを使用します。

5.1 リポジトリの追加とインストール

1. 公式PostgreSQL YumリポジトリからRPMパッケージをインストールします:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

(ヒント:CentOS/RHELのバージョンに合わせてリンク内の EL-8 部分を調整してください。)

2. サーバーとクライアントパッケージをインストールします:

sudo yum install -y postgresql14-server postgresql14

(ヒント:希望するバージョンに合わせて postgresql14 を調整してください。)

5.2 データベースの初期化

初回インストール時は、データベースディレクトリを初期化する必要があります:

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

5.3 起動と自動起動の設定

1. サービスを起動します:

sudo systemctl start postgresql-14

2. OS起動時に自動で開始するように設定します:

sudo systemctl enable postgresql-14

5.4 セキュリティ設定

CentOS/RHEL上でのセキュリティ設定ステップはDebian/Ubuntuと同様です:

  1. postgres ユーザーにパスワードを設定します。
  2. 対応する pg_hba.conf ファイルを編集し、認証方式を md5 または scram-sha-256 に変更します。
  3. サービスを再起動します (sudo systemctl restart postgresql-14)。

6. Docker を使用した PostgreSQL のインストール

Dockerは、隔離されたコンテナ内でPostgreSQLを実行するための非常に便利な方法を提供し、あらゆる環境で一貫したデプロイ結果を保証します。

6.1 Docker のインストール

Dockerが未インストールの場合、Docker公式サイト ( https://www.docker.com/ ) にアクセスし、OSに適したインストールガイドを確認してください。

6.2 PostgreSQL コンテナの実行

1. まず、公式イメージをプル(取得)します:

docker pull postgres
# 特定のバージョンを指定する場合: docker pull postgres:14

2. コンテナを起動して実行します:

docker run --name postgresdb -e POSTGRES_PASSWORD=your_strong_password -p 5432:5432 -d postgres

パラメータ詳細:

  • --name postgresdb: コンテナに名前を付けます。
  • -e POSTGRES_PASSWORD=...: postgres ユーザーのパスワードを環境変数で設定します。注意:本番環境ではパスワードをハードコードせず、Docker Secretsやセキュアな環境変数注入メカニズムを使用してください。
  • -p 5432:5432: ホストマシンの5432ポートをコンテナ内部の5432ポートにマッピングします。
  • -d: コンテナをバックグラウンド(デタッチモード)で実行します。

実行中のコンテナを確認します:

docker ps

6.3 コンテナへの接続

コンテナが起動したら、通常のローカルデータベースと同様に psql や pgAdmin を使用して接続できます。ホスト名には localhost または 127.0.0.1 を使用し、ポートは5432、ユーザーは postgres、パスワードはコンテナ起動時に設定したものです。

6.4 Docker ボリューム (Volumes) によるデータの永続化

デフォルトでは、Dockerコンテナが停止または削除されると、内部で生成されたデータは永久に失われます。データを永続化するために、Dockerボリュームを使用する必要があります。

ステップ 1:Dockerボリュームを作成する

docker volume create postgres_data

ステップ 2:ボリュームをマウントしてコンテナを実行する

docker run --name postgresdb -e POSTGRES_PASSWORD=your_strong_password -p 5432:5432 -v postgres_data:/var/lib/postgresql/data -d postgres

パラメータ解析:

  • -v postgres_data:/var/lib/postgresql/data: このステップが極めて重要です。作成した postgres_data ボリュームを、コンテナ内部のデータ保存用デフォルトディレクトリ /var/lib/postgresql/data にマウントします。これにより、コンテナが破棄されても、データはホストマシンのボリューム内に安全に保持されます。