株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > PostgreSQL インストール・初期設定(Ubuntu 24.04)

PostgreSQL インストール・初期設定(Ubuntu 24.04 LTS)


PostgreSQL は高機能・高信頼性のオープンソース RDB(リレーショナルデータベース)です。
Go 言語・PHP・Java など主要な言語から利用でき、JSON 型・全文検索・パーティションなど豊富な機能を持ちます。
この記事では Ubuntu 24.04 LTS へのインストールから Web アプリケーションからの接続まで解説します。


Ubuntu 24.04 のリポジトリには PostgreSQL 16 が含まれています。

sudo apt update
sudo apt install -y postgresql postgresql-contrib

# バージョン確認
psql --version
# psql (PostgreSQL) 16.x

インストール後、PostgreSQL サービスは自動的に起動します。

# サービス状態確認
sudo systemctl status postgresql

# OS 起動時に自動起動(通常はデフォルトで有効)
sudo systemctl enable postgresql

PostgreSQL はインストール時に OS ユーザー postgres とデータベース管理者 postgres が作成されます。
初回の接続はこのユーザーで行います。

# postgres OS ユーザーに切り替えて psql を起動
sudo -u postgres psql

# psql プロンプトが表示される
# postgres=#

アプリケーション用のデータベースユーザーを作成します。postgres=# プロンプトで実行してください。

-- アプリ用ユーザーを作成(パスワードを設定)
CREATE USER appuser WITH PASSWORD '強いパスワードをここに';

-- ユーザー一覧を確認
\du

OS コマンドでも作成できます:

sudo -u postgres createuser --pwprompt appuser

-- psql 内で実行(postgres ユーザーで接続中)
CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8' LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8' TEMPLATE template0;

-- 日本語ロケールが不要な場合(シンプル)
CREATE DATABASE appdb OWNER appuser;

-- データベース一覧を確認
\l

OS コマンドでも作成できます:

sudo -u postgres createdb -O appuser appdb

/etc/postgresql/16/main/pg_hba.conf がクライアント認証の設定ファイルです。
デフォルトではローカル接続は peer 認証(OS ユーザーと同名のみ接続可)になっています。

sudo nano /etc/postgresql/16/main/pg_hba.conf

アプリユーザーがパスワードで接続できるよう行を追加します:

# pg_hba.conf に追記(既存行の上に追加する)
# TYPE  DATABASE  USER     ADDRESS    METHOD
local   appdb     appuser             scram-sha-256
host    appdb     appuser  127.0.0.1/32  scram-sha-256

設定を反映します:

sudo systemctl reload postgresql

# appuser でデータベース appdb に接続
psql -U appuser -d appdb -h 127.0.0.1

# パスワードを入力して接続できれば成功
# appdb=>

-- テーブル作成
CREATE TABLE users (
    id    SERIAL PRIMARY KEY,
    name  VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- データ挿入
INSERT INTO users (name, email) VALUES ('山田太郎', 'yamada@example.com');

-- データ取得
SELECT * FROM users;

-- テーブル一覧
\dt

Go から PostgreSQL に接続する場合は pgx ドライバが推奨されています。

go get github.com/jackc/pgx/v5
package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/jackc/pgx/v5"
)

func main() {
    dsn := os.Getenv("DATABASE_URL")
    // 例: postgres://appuser:password@127.0.0.1:5432/appdb

    conn, err := pgx.Connect(context.Background(), dsn)
    if err != nil {
        log.Fatal("DB接続失敗:", err)
    }
    defer conn.Close(context.Background())

    var name string
    err = conn.QueryRow(context.Background(),
        "SELECT name FROM users WHERE id = $1", 1).Scan(&name)
    if err != nil {
        log.Fatal("クエリ失敗:", err)
    }
    fmt.Println("名前:", name)
}

接続文字列(DSN)は環境変数で管理するのがベストプラクティスです。 パスワードをソースコードに直接書かないようにしてください。

# 環境変数で設定する
export DATABASE_URL="postgres://appuser:password@127.0.0.1:5432/appdb"

sudo apt install -y php-pgsql
<?php
$dsn = 'pgsql:host=127.0.0.1;port=5432;dbname=appdb';
$pdo = new PDO($dsn, 'appuser', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');
$stmt->execute([':id' => 1]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['name'];

/etc/postgresql/16/main/postgresql.conf メイン設定(メモリ、接続数など)
/etc/postgresql/16/main/pg_hba.conf クライアント認証設定
/var/lib/postgresql/16/main/ データディレクトリ
/var/log/postgresql/ ログファイル

Go 言語 Web アプリ入門 — net/http、JSON REST API、PostgreSQL 接続、systemd デーモン化
Docker 入門(Ubuntu 24.04) — Docker Compose で PostgreSQL + Go + Nginx 環境を構築


Web アプリケーションを本番公開する際は、SSL証明書による HTTPS 化が必須です。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 RapidSSL 3,960円/1年(税込)〜で SSL証明書を販売しています。 審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。

SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス


← 技術ドキュメント一覧へ戻る