PostgreSQL 16のインストール手順(Ubuntu環境)
Ubuntuに最新版のPostgreSQL 16を導入し、基本的な認証構成とネットワークアクセスを設定する方法について説明します。必要に応じて公式リポジトリを利用することで、標準パッケージよりも新しいバージョンを取得できます。
公式リポジトリの追加(任意)
最新の安定版を使用する場合、PostgreSQL Global Development Groupの公式APTソースを登録します。
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
GPG鍵の登録
パッケージの信頼性を保証するために署名鍵をインポートします。
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
データベースサーバーのインストール
依存関係を含めて一括でインストールします。
sudo apt update && sudo apt install -y postgresql-16 postgresql-contrib-16 postgresql-client-16
- postgresql-16: メインのデータベースエンジン
- postgresql-contrib-16: 追加機能(uuid-generation, full-text searchなど)
- postgresql-client-16: 外部接続用クライアントツール
サービスの状態確認と制御
インストール後、自動的に起動されますが、明示的にステータスを確認できます。
sudo systemctl status postgresql@16-main
停止または再開には以下のコマンドを使用します。
sudo systemctl start postgresql@16-main
カスタムデータディレクトリの設定
既定の場所ではなく、別のストレージにデータを配置する場合は次の手順で初期化します。
sudo systemctl stop postgresql@16-main
sudo mkdir -p /data/postgres
sudo chown -R postgres:postgres /data/postgres
sudo chmod 700 /data/postgres
sudo -u postgres /usr/lib/postgresql/16/bin/initdb -D /data/postgres
その後、postgresql.conf内のdata_directoryを更新してからサービスを再起動します。
管理者アカウントへのアクセス
初期状態ではOSユーザーpostgresがデータベースのスーパーユーザーとして利用可能です。特権セッションを開始します。
sudo -u postgres psql
プロンプトがpostgres=#に変われば接続成功です。
パスワードの強化
デフォルトではパスワードなしでローカル接続できるため、即座に安全なパスワードを設定すべきです。
ALTER USER postgres PASSWORD 'your_secure_password_here';
変更を反映したか確認するには以下を実行。
\du
特定ユーザーの暗号化方式を確認したい場合:
SELECT usename, substr(passwd, 1, 10) AS enc_method FROM pg_shadow WHERE usename = 'postgres';
外部からの接続を許可する設定
リモートホストやアプリケーションサーバーから接続可能なように構成を変更します。
pg_hba.conf の編集
ホストベースの認証ルールを調整します。ファイルのパスはバージョンにより異なります。
sudo nano /etc/postgresql/16/main/pg_hba.conf
IPv4全範囲に対してSCRAM-SHA-256によるパスワード認証を有効化。
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 scram-sha-256
postgresql.conf の修正
ネットワークリスニングを有効にするためにリスンアドレスを変更。
listen_addresses = '*, ::'
複数NICがある環境では特定のIPを指定することも可能です。
設定の適用
変更を反映させるためにサービスを再起動。
sudo systemctl restart postgresql@16-main
ファイアウォールの調整
UFWを使用している場合、5432番ポートを開きます。
sudo ufw allow from any to any port 5432 proto tcp
新規ユーザーとデータベースの作成
運用用アカウントとして分離されたユーザーを作成することが推奨されます。
CREATE USER app_user WITH PASSWORD 'complex_password_2025';
CREATE DATABASE app_db OWNER app_user;
GRANT CONNECT ON DATABASE app_db TO app_user;
拡張機能の有効化
AIワークロード向けのベクトル類似度検索をサポートするpgvectorを有効にします。
CREATE EXTENSION IF NOT EXISTS vector SCHEMA public;
インストール済み拡張の一覧表示:
SELECT extname, extversion, extowner::regrole FROM pg_extension ORDER BY extname;
トラブルシューティングガイド
- 接続拒否される:
pg_hba.confのMETHODがtrustになっていないか確認。意図しないlocalルールが優先されている可能性があります。 - リモート接続できない: セキュリティグループやクラウドプロバイダーのファイアウォール設定も併せて確認してください。
- 認証エラー:
scram-sha-256に対応していない古いクライアントでは接続できません。必要に応じてmd5に一時的に変更可能ですが非推奨です。
パスワードを失念した場合は再度sudo -u postgres psqlで接続し、ALTER USER文で再設定できます。